Python Forum
Remove all \n from end of list items
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Remove all \n from end of list items
#1
Hello all,

I've been Googling and reading here, reading StackOverflow but can't solve what I feel is a very simple problem.

I cannot strip off the trailing '\n' from all my list items in list. I've tried a few dozen examples online and they never work for me, I then thought maybe I need something in my library but all seems well covered there too.

I'm not going to give all the failing examples here, there is no point.

Here are all the errors I'm getting using the different techniques:

AttributeError: 'list' object has no attribute 'rstrip'
AttributeError: 'list' object has no attribute 'strip'
<map object at 0x000001A36C428D30> (I know, not an error but what I got trying example)
TypeError: descriptor 'strip' for 'str' objects doesn't apply to a 'list' object
TypeError: expected string or bytes-like object
AttributeError: type object 'DataFrame' has no attribute 'res'
TypeError: 'list' object is not callable
TypeError: expected string or bytes-like object

I tried everything, I just don't get why I can't simply strip off the trailing \n in all my items.

Is there a special library for it, because everyone with their answers all seem to work.

Here is what I'm originally doing though:

res = []
with open('sample.txt', 'r') as fin:
    data = fin.read().splitlines(True)
with open('sample.txt', 'w') as fout:
    res.append(data[:200])
    fout.writelines(data[200:])
print(res)
I'm getting 200 lines from a txt file and simultaneously creating a list of the proxies to use in my program, but they all have the newlines from when they being appended.

Thanks for any help.


hmmm, I'm just now noticing the double brackets on my new list:

[['203.215.181.219:36342\n', 
'200.149.0.74:8080\n', '46.209.98.227:8080\n', '150.95.131.174:3128\n']]
Reply
#2
You can simply strip newline from the end of the string. But is this actually needed?
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#3
Hello yes because I set it as a proxy for requests. I've been doing all the strip methods, string strip methods and keep getting all the errors I mentioned in the OP.

I think it's because it's not turning into a list because of the double [[]], that's why the stripping is bringing errors.

OK, I have a working example but I open file 3 times which is probably not a good idea for speed. What I need to do is get 200 lines from a text file into a list, and delete those 200 lines simultaneously.

Anyway this works, but I think it's not best:

with open("sample.txt") as myfile:
    res = [next(myfile).strip() for x in range(200)]
with open('sample.txt', 'r') as fin:
    data = fin.read().splitlines(True)
with open('sample.txt', 'w') as fout:
    fout.writelines(data[200:])
print(res)

Ok, keep answering my own post, I've slimmed down, this works best.

with open('sample.txt', 'r') as fin:
    res = [next(fin).strip() for x in range(200)]
    data = fin.read().splitlines(True)
with open('sample.txt', 'w') as fout:
    fout.writelines(data[200:])
print(res)
Reply
#4
You are doing two task here making a list and wirte to file.
Let say this is sample.txt.
Output:
203.215.181.219:36342 200.149.0.74:8080 46.209.98.227:8080 150.95.131.174:3128
Now just do the witting to file part and it seems okay.
with open('sample.txt', 'r') as fin:
    data = fin.read().splitlines(True)
with open('sample1.txt', 'w') as fout:
    fout.writelines(data[2:])
Other name sample1.txt so it don't overwrite original in this test.
Output:
46.209.98.227:8080 150.95.131.174:3128
Getting a list without \n could be done like this.
with open('sample.txt', 'r') as fin:
    data = [i.strip() for i in fin]
Output:
>>> data ['203.215.181.219:36342', '200.149.0.74:8080', '46.209.98.227:8080', '150.95.131.174:3128']
Writing back from this list could be.
with open('sample.txt', 'r') as fin:
    data = [i.strip() for i in fin]
with open('sample2.txt', 'w') as fout:
    for ip in data[:2]:
        fout.write(f'{ip}\n')
Output:
203.215.181.219:36342 200.149.0.74:8080
Reply
#5
Another possibility is to use split('\n') instead of splitlines.

Using data provided by snippsat in file named ip.txt:

>>> with open('ip.txt', 'r') as f: 
...     data = f.read().split('\n') 
...
>>> data
['203.215.181.219:36342',
 '200.149.0.74:8080',
 '46.209.98.227:8080',
 '150.95.131.174:3128']
I still don't understand why it's good idea to strip newlines while reading the file and then put them back while writing to file (I know, I am slow today).
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  concatenating 2 items at a time in a python list K11 3 60 3 hours ago
Last Post: buran
  Remove specific elements from list with a pattern Xalagy 3 274 Oct-11-2020, 07:18 AM
Last Post: Xalagy
  How to remove dict from a list? Denial 7 207 Sep-28-2020, 02:40 PM
Last Post: perfringo
  Select the other of 2 items in a list Clunk_Head 7 384 Sep-01-2020, 05:27 PM
Last Post: Clunk_Head
  Removing items from list if containing a substring pythonnewbie138 2 288 Aug-27-2020, 10:20 PM
Last Post: pythonnewbie138
  Print the number of items in a list on ubuntu terminal buttercup 2 364 Jul-24-2020, 01:46 PM
Last Post: ndc85430
  How to put the items of one list in new generated lists Bobbear 1 275 Jun-12-2020, 06:08 AM
Last Post: buran
  Compare Two Lists and Replace Items In a List by Index nagymusic 2 504 May-10-2020, 05:28 AM
Last Post: deanhystad
  mydict.items() is not a list Skaperen 2 356 May-07-2020, 07:03 AM
Last Post: DeaD_EyE
  Add items from one list to list of lists PUP280 5 789 May-05-2020, 03:47 PM
Last Post: PUP280

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020