我如何读入一个包含一行文本但我需要在每个元素中迭代的文件?需要在脚本内部访问文件,超出“with”语句的范围。
例如,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)
这确实有效。我想我真正的问题是,有没有更好的方法来完成这个?使它成为一个列表然后成为一个字符串似乎是一种迂回的方法。我想我可以直接将它导入到一个字符串中,然后跳过将它全部列为一个列表。我只是想知道我是否可以将它作为一个列表来做?
最佳答案
您要查找的似乎是 .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)
关于python - 在 Python 列表元素中迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43233428/