我有这段代码:
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"]
答案 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现在包含请求的输出