从文件中读取并检查列表中的单词
reading from a file and checking if word in list
我的妻子给我发短信,杂乱无章且冗长的购物清单。我会将她的列表粘贴到一个文本文件中。我想编写一个程序来擦除她的无序列表并将有序列表写入该文件。 e.x。所有的水果在一起,肉在一起等等。显然这个项目还处于起步阶段。在我的文本文件中,我写了:
banana
apple
在这种情况下,当我遍历文本文件的每一行时,我希望 item
附加到 fruit?但事实并非如此。我错过了什么?
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)
您需要从文件中删除行尾,因为它们在末尾带有 \n
或 \r\n
(Windows 回车 return)。这意味着您正在比较 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
但是前两个解决方案都可以。
使用.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()
来检查以大写字母开头的项目
我的妻子给我发短信,杂乱无章且冗长的购物清单。我会将她的列表粘贴到一个文本文件中。我想编写一个程序来擦除她的无序列表并将有序列表写入该文件。 e.x。所有的水果在一起,肉在一起等等。显然这个项目还处于起步阶段。在我的文本文件中,我写了:
banana
apple
在这种情况下,当我遍历文本文件的每一行时,我希望 item
附加到 fruit?但事实并非如此。我错过了什么?
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)
您需要从文件中删除行尾,因为它们在末尾带有 \n
或 \r\n
(Windows 回车 return)。这意味着您正在比较 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
但是前两个解决方案都可以。
使用.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()
来检查以大写字母开头的项目