【问题标题】:Python list integrateUpper/Lowercase check?Python列表集成大写/小写检查?
【发布时间】:2017-02-26 12:09:03
【问题描述】:

我目前使用以下代码从数据框中选择行:

list = ['3d block','3D Block','3D block','3d Block','cafe','Cafe']
data[data['description'].str.contains('|'.join(list))]

如您所见,我目前为大写/小写实现了不同的查询,因为我意识到“3d 打印”并没有真正匹配所有有问题的项目。

上面的代码是否可以改进或缩短,以便列表包括一个和两个单词的所有可能的大小写字符变体?

【问题讨论】:

    标签: python list uppercase lowercase


    【解决方案1】:

    您可以使用string.lower() 函数简单地将它们全部转换为更低

    使您的列表仅包含小写字符。但是您也可以对此进行安全检查

    my_list=['3d block', 'cafe']
    
    # As karthik suggested, just to be safe, convert your list to lowercase
    for i in range(len(my_list)):
        my_list[i]=ele.lower()
    
    my_query='3D bLoCk'
    if my_query.lower() in my_list:
        print('yes')
    

    打印yes

    【讨论】:

    • 您也必须将原始列表转换为更低。另外,list 是一个错误的变量名
    【解决方案2】:

    您可以通过将case 参数作为False 传递来进行case InSeNsitIvE 选择:

    lst = ['3D Block', 'cafe']
    data[data['description'].str.contains('|'.join(lst), case=False)]
    

    记住不要使用 list 作为名称,因为这会影响内置的 list 函数,并使其在以后的代码中无法使用。


    参考:

    pandas.Series.str.contains

    【讨论】:

    • 不错。忘了那个!小笨蛋,只是提到不使用list 作为列表名称
    • 是的,也添加了
    猜你喜欢
    • 2016-12-25
    • 2017-06-11
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多