I'm having issues in reading a file into a list, When I do it only creates one item from the entire file rather than reading each element into its own field. I'm using \n
as the thing to strip on, but I can't get it to work correctly.
temp = open('drugs')
drugs = [temp.read().strip("\n")]
temp.close
Result:
['40 Stimpak\n53 Mentats\n87 Buffout\n109 Rad-X\n125 Booze\n260 Jet Antidote\n311 Roentgen Rum\n424 Monument Chunk\n480 Bonus +1 Agility\n525 Hypo \n48 RadAway\n71 Fruit\n103 Iguana-on-a-stick\n110 Psycho\n144 Super Stimpak\n273 Healing Powder\n334 Poison\n469 Rot Gut\n481 Bonus +1 Intelligence \n49 Antidote\n81 Iguana-on-a-stick\n106 Nuka-Cola\n124 Beer\n259 Jet\n310 Gamma Gulp Beer\n378 Cookie\n473 Mutated Toe\n482 Bonus +1 Strength ']
drugs.strip('\n')
Traceback (most recent call last):
File "seek", line 18, in <module>
print drugs.strip('\n')
AttributeError: 'list' object has no attribute 'strip'
If you're okay with reading the entire file's contents into memory, you can also use str.splitlines()
with open('your_file.txt') as f:
lines = f.read().splitlines()
splitlines()
is similar to split('\n')
but if your file ends with a newline, split('\n')
will return an empty string at the very end, whereas splitlines()
handles this case the way you want.
file.read()
reads entire file's contents, unless you specify max length. What you must be meaning is .readlines()
. But you can go even more idiomatic with a list comprehension:
with open('drugs') as temp_file:
drugs = [line.rstrip('\n') for line in temp_file]
The with
statement will take care of closing the file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With