我的妻子给我发短信,杂乱无章,而且杂货清单很长。我会将她的名单粘贴到一个文本文件中。我想编写一个程序,将删除她的无序列表并将有序列表写入该文件。一起吃水果,一起吃肉等等。显然,这个计划还处于起步阶段。在我的文本文件中,我写道:bananaapple在这种情况下,当我遍历文本文件的每一行时,我希望item被附加到水果?但事实并非如此。我错过了什么?fruit = []vegetables = []meat = []dairy = []fruit_list = ["banana", "apple", "orange"]def read_list(): with open("/storage/emulated/0/textfiles/grocery.txt", "r") as r: for item in r: if item in fruit_list: fruit.append(item) print(fruit)
2 回答
SMILET
TA贡献1796条经验 获得超4个赞
您需要从文件中删除行结尾,因为它们在结尾处带有\n或\r\n(Windows 回车符)。这意味着你是比较banana有banana\n,这是不相等的,导致没有被追加。
您可以str.strip()像这样预先使用来解决这个问题:
item = item.strip()
if item in fruit_list:
# rest of code
或者你可以直接从右边剥离str.rstrip():
item = item.rstrip()
if item in fruit_list:
# rest of code
您还可以在迭代时删除所有内容map():
for item in map(str.strip, r):
# rest of code
但是前两个解决方案没问题。
子衿沉夜
TA贡献1828条经验 获得超3个赞
用于.rstrip()从行尾剪切 '\n' 符号
def read_list():
with open("grocery.txt", "r") as r:
for item in r:
if item.rstrip() in fruit_list:
fruit.append(item)
print(fruit)
read_list()
您也可以item.rstrip().lower()用来检查以大写字母开头的项目
添加回答
举报
0/150
提交
取消