【问题标题】:Dividing a string with list comprehension用列表理解划分字符串
【发布时间】:2021-03-23 21:01:27
【问题描述】:

我正在尝试获取一个字符串列表:

string = "A1B3C3D4"

list = ["A1","B2","C3","D4"]

什么是实现它的pythonic方法?

提前致谢

【问题讨论】:

标签: python string list


【解决方案1】:

您可以使用re.findall 查找给定字符串中模式[A-Z]\d 的所有非重叠匹配项。

import re

regex = r"[A-Z]\d"
string = "A1B3C3D4"
result = re.findall(regex, string)
print(result)

输出:

['A1', 'B3', 'C3', 'D4']

【讨论】:

    【解决方案2】:

    您可以在列表理解中使用 re.findall

    import re
    
    lst = [x for x in re.findall(r"[A-Z]\d", string)]
    

    执行上述代码后,你会得到:

    lst = ['A1', 'B3', 'C3', 'D4']
    

    【讨论】:

    • re.findall 本身返回一个列表。为什么要从同一个列表中创建一个新列表?
    • 你是对的,只是基于这个问题,我使用了python列表理解语法。 @VishalSingh
    • pythonic 并不意味着使用列表理解来做事。
    • @VishalSingh 不,但 OPs 问题的标题确实
    【解决方案3】:

    也许你可以使用这个例子:

    
    word = 'CatBatSatFatOr'
    
    print([word[i:i+3] for i in range(0, len(word), 3)])
    
    Output:
    ['Cat', 'Bat', 'Sat', 'Fat', 'Or']
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-17
      • 2019-12-23
      • 2021-04-28
      • 2017-10-10
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多