为了账号安全,请及时绑定邮箱和手机立即绑定

从文件中读取并检查单词是否在列表中

从文件中读取并检查单词是否在列表中

慕侠2389804 2021-08-24 16:39:07
我的妻子给我发短信,杂乱无章,而且杂货清单很长。我会将她的名单粘贴到一个文本文件中。我想编写一个程序,将删除她的无序列表并将有序列表写入该文件。一起吃水果,一起吃肉等等。显然,这个计划还处于起步阶段。在我的文本文件中,我写道: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

但是前两个解决方案没问题。


查看完整回答
反对 回复 2021-08-24
?
子衿沉夜

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()用来检查以大写字母开头的项目


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信