如何读入包含文本行但我需要在每个元素内迭代的文件?需要在脚本内部访问该文件超出"范围内的"言。
例如,file.txt包含单行" abcdefg"没有引号。如果我编写下面的代码,它就无法工作,因为我相信我在列表中创建了一个元素(即lines = [' abcdefg']:
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for letter in lines:
if letter == "a":
print(letter)
我假设这会创建一个" abcdefg"的单个元素。内线当然不会等于" a"。
我可以通过将列表转换为字符串来解决这个问题:
{snip}
text_file_string = ''.join(lines)
for letter in text_file_string:
if letter == "a":
print(letter)
这确实有效。我想我真正的问题是,有没有更好的方法来实现这一目标?这似乎是一个迂回的方法,使它成为一个列表,然后是一个字符串。我想我可以直接将它导入一个字符串并跳过将它列为一个列表。我只是想知道我是否可以想要它作为一个列表?
答案 0 :(得分:2)
您所寻找的似乎是.read()
,而不是.readlines()
。 .readlines
返回一行数组。您希望将整个文件作为字符串,因此.read()
。
file = 'file.txt'
with open(file) as file_object:
content = file_object.read()
for letter in content:
if letter == "a":
print(letter)
答案 1 :(得分:0)
线上的循环一次给你一行。循环一行以一次获得一个字符:
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for line in lines:
for letter in line:
if letter == "a":
print(letter)
答案 2 :(得分:0)
你需要嵌套第二个for循环。
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for line in lines:
for letter in line:
if letter == "a":
print(letter)
答案 3 :(得分:0)
与其他所有人同意,但另外还有一项建议。文件对象是可迭代的。您可以利用这样的事实使您的代码更简单。
with open("myfile.txt", "rt") as file_ob:
for line in file_ob:
for letter in line:
if letter == "a":
print(letter)