我正在编写一个程序,用于从文本文件中读取一些indata。数据是字符串和整数的混合。典型文件可能如下所示:
Kiruna
setaim=0
23
34
20
1
1
20
我用
读取文件f = open(path,'r')
content = f.readlines()
如果我打印内容列表,我会
['Kiruna\n', 'setaim=0\n', '23\n', '34\n', '20\n', '1\n', '1\n', '20\n']
当我想在第一个元素中使用字符串时,' \ n'导致问题,我想删除它。我已经检查了一些其他线程,表明我应该使用方法.strip()或.rstrip()我已经尝试了
content[0].rstrip('\n')
和
content[0]=content[0].rstrip('\n')
但我得到的只是错误
"TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'"
我该怎么办?
答案 0 :(得分:6)
with open(path,'r') as f:
content = [line.rstrip() for line in f] #this should remove all "\n"
print content
<强>输出:强>
['Kiruna', 'setaim=0', '23', '34', '20', '1', '1', '20']
答案 1 :(得分:3)
content = [x.rstrip() for x in f] # remove all the new lines when file is read
最好使用with
打开文件,它会自动关闭它们:
with open(path,'r') as f:
content = [x.rstrip() for x in f]
答案 2 :(得分:0)
readlines
返回迭代器,而不是列表,因此您不能使用index来获取元素。
迭代迭代器,即列表理解,它可以工作。
content = [x.rstrip() for x in f]