首页 > 解决方案 > 在 Python 中创建列表时如何忽略连字符?

问题描述

这里是非常绿色的 python 用户。我有一个 .csv 文件,其中包含数百种葡萄酒、它们的价格和评级,以及销售特定葡萄酒的酒厂。我正在尝试编写一个函数,该函数返回给定葡萄酒的所有酒厂的编号,如下所示:

def all_wineries(wine): 
    wineries = []    
    for i in range(len(csv_data)): 
        if wine.lower() in cell(i, "variety").lower(): 
            wineries.append(cell(i, "winery"))

    return list(set(wineries))

x = all_wineries("Pinot Noir")
len(x)

但是,我没有注意到有些葡萄酒是连字符的(例如“Pinot Noir-Gamay”)并且这些葡萄酒包含在我的最终答案中。我如何忽略那些与我在函数中输入的不完全一致的葡萄酒?

标签: python

解决方案


我在这里详细说明 Ed Ward 的评论。

wine.lower().strip() == cell(i, "variety").lower().strip()

lower() 函数将字符串转换为小写。strip() 函数从字符串的开头和结尾删除所有空格(空格、制表符)。在您正在寻找的葡萄酒和您正在寻找的葡萄酒上使用这两个功能。这两种葡萄酒只有在完全相同的情况下才会匹配(没有连字符)。

def all_wineries(wine): 
    wineries = []    
    for i in range(len(csv_data)): 
        if wine.lower().strip() == cell(i, "variety").lower().strip()
            wineries.append(cell(i, "winery"))

    return list(set(wineries))

x = all_wineries("Pinot Noir")
len(x)

推荐阅读