繁体   English   中英

Python:即使它肯定存在,也不会在列表中找到字符串

[英]Python: will not find a string in a list even though it definitely is there

这应该是一个如此简单的问题,但它让我发疯。 当我在字符串列表中搜索关键字'gift'时,只要我手动设置字符串'gift',python就会找到它。 当我从字典键派生字符串时,即使字典键是没有拼写错误的相同字符串对象,python 也不会在相关列表中找到它。 这是确切的代码:

这有效:

subtopic_keys = list(copy.deepcopy(subtopic_map).keys())

for element in subtopic_keys: 
    try:
        for dict_object in subtopic_map[element]:
            for key2 in dict_object.keys():
                for index, entry in enumerate(dict_object[key2]['tweets']):
                    count = 0
                    if 'gift' in clean(entry).split():
                        pass
                    if 'gift' not in clean(entry).split():
                        dict_object[key2]['tweets'][index] = 'removed'
    except KeyError:
        pass

这不起作用。 注意:唯一的变化是 'gift' 已被第一个 for 循环中的元素替换,这是一个相同的字符串对象。 我通过打印 type(element) 验证了这一点,它是字符串类。

subtopic_keys = list(copy.deepcopy(subtopic_map).keys())

for element in subtopic_keys: 
    try:
        for dict_object in subtopic_map[element]:
            for key2 in dict_object.keys():
                for index, entry in enumerate(dict_object[key2]['tweets']):
                    count = 0
                    if element in clean(entry).split():
                        pass
                    if element not in clean(entry).split():
                        dict_object[key2]['tweets'][index] = 'removed'
    except KeyError:
        pass

代码的最后一点用“removed”替换每个条目,这意味着 python 不能识别任何条目中的字符串,只要它是从 dict 键派生的。 为什么会是这样? dict 键是一个相同的字符串类对象。

我有同样的问题。 原来我的列表在所有元素字符串的末尾都有“\\n”。 我就是这样解决的。

openList=open("list.txt","r")
list = b.readlines() # this returned \n in each element of the list
list2=[x.replace("\n","") for x in list] #this removes all the \n in all elements in list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM