从for循环输出创建一个列表[Python]

时间:2016-03-09 13:17:09

标签: python list python-3.x for-loop

我有这段代码:

with open("text2.txt", 'r') as file:        
    for cats in file:
        if "blue" in cats: 
            print (cats)

text2.txt文件如下所示:

blue cat 3 
blue cat 2 
blue cat 5 
red cat 2 
green cat 2 
blue cat 3
yellow cat 5 

我想得到一个如下所示的列表:

["blue cat 3, blue cat 2, blue cat 5, blue cat 3"] 

"手动制作你的清单"我不是一个选择,我处理的是一个大文件,所以这不是解决我问题的方法:

mylist = ["blue cat 3, blue cat 2, blue cat 5, blue cat 3"]

6 个答案:

答案 0 :(得分:4)

这可以通过列表理解轻松完成。您只需循环遍历文件中的每一行,只保留包含' blue'在其中:

with open("text2.txt", 'r') as file:
    n = [i.strip() for i in file if 'blue' in i.lower()]

print(n)

将输出:

['blue cat 3', 'blue cat 2', 'blue cat 5', 'blue cat 3']

扩展上述工作方式并将其与您的代码相关联:

你实际上并不遥远。您在解决方案中唯一缺少的是实际创建一个列表并附加到它:

所以,创建一个空列表:

blue_cats = []

然后保持您的代码,但是更改print (cats)以附加到您的代码。注意我使用了strip()。这将删除字符串中保留的\n,因为它位于文件中,您可能不想要它。最后,作为一个额外的好处,以确保您总能找到蓝色',您希望通过在您搜索的字符串上使用lower()强制小写:

blue_cats = []
with open("text2.txt", 'r') as file:        
    for cats in file:
        if "blue" in cats.lower(): 
            blue_cats.append(cats.strip())

答案 1 :(得分:1)

如果您可以编辑上面提到的代码,则只需添加一个列表

即可
blue_cats = []
with open("text2.txt", 'r') as file:        
    for cats in file:
        if "blue" in cats: 
            blue_cats.append(cats)

答案 2 :(得分:1)

以下方法应该有所帮助:

with open("text2.txt", 'r') as f_input:
    output = [row.strip() for row in f_input if row.startswith("blue cat")]

print(', '.join(output))

这将打印:

blue cat 2, blue cat 5, blue cat 3

答案 3 :(得分:0)

尝试创建一个数组,然后将所需的值附加到该数组:

blue_cats=[]
with open("text2.txt", 'r') as file:        
    for cats in file:
        if "blue" in cats: 
            blue_cats.append(cats.strip())
print(blue_cats)

答案 4 :(得分:0)

with open("text2.txt", 'r') as file:
    blue_cats = [cats.strip() for cats in file if "blue" in cats.lower()]

答案 5 :(得分:0)

从技术上讲,到目前为止,没有一个答案会产生请求的输出。

OP要求输出为:

["blue cat 3, blue cat 2, blue cat 5, blue cat 3"] 

这是一个单元素列表,包含一个“逗号 - 和 - 空格” - 分隔字符串,仅包含输入文件中的“蓝猫”

怀疑这是错字,然后可能不是。

所以正确回答问题,这里有一些代码:

with open("text2.txt", 'r', encoding='utf_8') as openfile:
    cats = [line.strip() for line in openfile if 'blue' in line.lower()]
mystring = ""
for cat in cats:
    mystring += ', ' + cat
mylist = []
mylist.append (mystring[2:])

mylist现在包含请求的输出