我妻子发短信给我杂乱无章的购物清单。我将她的列表粘贴到文本文件中。我想编写一个程序,该程序将删除她的无序列表并将有序列表写入该文件。 e.x.所有的水果在一起,肉在一起等等。显然,该程序尚处于起步阶段。在我的文本文件中,我写了:
banana
apple
在这种情况下,当我遍历文本文件的每一行时,我希望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)
答案 0 :(得分:3)
您需要从文件中删除行尾,因为它们的末尾带有\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
但是前两个解决方案很好。
答案 1 :(得分:2)
使用.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()
检查以大写字母开头的项目