【问题标题】:find a substring in a selected portion of a list elements在列表元素的选定部分中查找子字符串
【发布时间】:2019-04-25 07:53:02
【问题描述】:

我有以下字符串列表 (list1),我想查找 str b 是否存在于 list1 中小数点前元素左侧部分的任何位置。

我尝试了下面的代码,但它找到了找到 str b 的所有元素。

list1= ['4.39', '5.25', '2.29', '3.16', '4.19', '1.5', '4.17', '2.18', '5.18', '4.18', '5.16', '4.4']
b=str(1)
print([s for s in list1 if b in s])

它返回以下内容:

['3.16', '4.19', '1.5', '4.17', '2.18', '5.18', '4.18', '5.16']

但是,我只想得到1.5,因为这是字符串 b 与小数点前左侧部分匹配的唯一元素。记住元素是字符串格式的。有什么快速检查这个东西的方法吗?

【问题讨论】:

    标签: python string list list-comprehension python-3.5


    【解决方案1】:

    您需要将每个字符串按. 拆分并提取第一个拆分:

    print([s for s in list1 if '1' in s.split('.')[0]])
    
    ['1.5']
    

    如需精确匹配,请使用==

    print([s for s in list1 if s.split('.')[0] == '1'])
    
    ['1.5']
    

    【讨论】:

    • 你知道我怎样才能找到list1中匹配元素的实际索引吗?
    • [idx for idx, s in enumerate(list1) if '1' in s.split('.')[0]] 应该这样做。
    • 谢谢jpp。它工作正常。只是一个小注释,代码中似乎有一个小错字。拆分s.split('.')[0])中的[0]后面误多了一个括号
    • @HT121,我觉得应该没问题,有2个方括号和2个右方括号?我之前对其进行了编辑以进行列表理解(您可能希望刷新)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    相关资源
    最近更新 更多