将文件读入列表并删除换行符

时间:2013-09-28 02:30:06

标签: python list strip

我在将文件读入列表时遇到问题,当我这样做时,只会从整个文件创建一个项目,而不是将每个元素读入自己的字段。我正在使用\n作为剥离的东西,但我无法让它正常工作。

temp = open('drugs')
drugs = [temp.read().strip("\n")]
temp.close

结果:

['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'

3 个答案:

答案 0 :(得分:13)

file.read()读取整个文件的内容,除非您指定最大长度。你的意思是.readlines()。但是你可以通过列表理解更加惯用:

with open('drugs') as temp_file:
  drugs = [line.rstrip('\n') for line in temp_file]

with语句将负责关闭文件。

答案 1 :(得分:1)

如果您可以将整个文件的内容读入内存,也可以使用str.splitlines()

with open('your_file.txt') as f:
    lines = f.read().splitlines()

splitlines()split('\n')类似,但是如果您的文件以换行符结尾,则split('\n')将在末尾返回一个空字符串,而splitlines()处理这种情况您想要的方式。

答案 2 :(得分:0)

这将条带直接合并到for语句中。

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

或者,如果您知道某行之前或之后不需要任何空格,则可以使用此功能。

import string

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