在Python列表元素内迭代

在Python列表元素内迭代,python,Python,如何读取包含一行文本但需要在每个元素内部迭代的文件?该文件需要在脚本内部访问,超出“with”语句的范围 例如,file.txt包含不带引号的单行“abcdefg”。如果我在下面编写代码,它将无法工作,因为我相信我正在列表中创建一个元素(即lines=['abcdefg']: file = 'file.txt' with open(file) as file_object: lines = file_object.readlines() for letter in lines:

如何读取包含一行文本但需要在每个元素内部迭代的文件?该文件需要在脚本内部访问,超出“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)

这确实有效。我想我真正的问题是,有没有更好的方法来实现这一点?这似乎是一种迂回的方法,先将其设置为列表,然后再设置为字符串。我想我可以直接将其导入字符串,然后跳过将其全部设置为列表。我只是想知道我是否可以将其设置为列表?

循环结束这些行一次提供一行。在一行上循环以一次获得一个字符:

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)

您需要为循环嵌套一秒钟

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)

看起来您要查找的是
.read()
,而不是
。readlines()
。readlines
返回一个行数组。您希望整个文件作为字符串,因此
.read()


同意其他人的意见,但有一个额外的建议。文件对象是可移植的。您可以通过这样利用这一事实来简化代码

with open("myfile.txt", "rt") as file_ob:
    for line in file_ob:
        for letter in line:
            if letter == "a":
                print(letter)

对循环使用嵌套的
怎么样?我甚至没有想到嵌套循环。这也很有效,因为它以列表形式保存了数据。我是python新手(不到两周),所以我必须用谷歌搜索“rt”参数。感谢@Phil Cote。有这么多方法做,有时会让人不知所措。
with open("myfile.txt", "rt") as file_ob:
    for line in file_ob:
        for letter in line:
            if letter == "a":
                print(letter)