Read file into list and strip newlines

左心房为你撑大大i 提交于 2019-11-29 21:21:24

问题


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'

回答1:


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.




回答2:


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.




回答3:


This incorporates the strip directly into the for statement.

with open('drugs', 'r') as f:
  for line in map(lambda line: line.rstrip('\n'), f):
    print line

Or, if you know you don't need any space before or after text on a line, you can use this.

import string

with open('drugs', 'r') as f:
  for line in map(string.strip, f):
    print line


来源:https://stackoverflow.com/questions/19062574/read-file-into-list-and-strip-newlines

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!