【问题标题】:regular expressions find string letters, and string letters with combination of string numbers python正则表达式查找字符串字母,以及字符串数字组合的字符串字母python
【发布时间】:2020-12-03 14:37:00
【问题描述】:
x = ['86050023328185523 THE B WITH PEANUT 140G'],['86050023328185523 ABC WITH BanaNA 40G'],['86050023328185523 B B Z WITH JElly 250G']

假设这是我们的变量,它包含 所有字符串。 输出应该是每个字符串,除了连续的字符串数字。

想要的输出:

 ['THE B WITH PEANUT 140G']
 ['ABC WITH BanaNA 40G']
 ['B B Z WITH JElly 250G']

代码:


x = ['86050023328185523 A B  Z  WITH PEANUT 140GB'],['86050023328185523 A B  Z  WITH PEANUT 140GB'],['86050023328185523 A B  Z  WITH PEANUT 140GB']

for e in x:
    for i in e:
        #print(type(i)) <class 'str'>
        f = re.findall(r'\d+',i)
        print(f)

代码结果:

['86050023328185523', '140']
['86050023328185523', '40']
['86050023328185523', '250']

【问题讨论】:

  • 也许您希望 re.sub(r'^\d+\s*','',i) 删除前导数字 + 空格?见ideone.com/OSBo6I

标签: python regex list


【解决方案1】:

我相信使用字符串方法的列表理解就足够了:

[[' '.join(s for s in l[0].split() if not s.isnumeric())] for l in x]

[['THE B WITH PEANUT 140G'],
 ['ABC WITH BanaNA 40G'],
 ['B B Z WITH JElly 250G']]

【讨论】:

    【解决方案2】:

    使用示例中的字符串子列表列表,您可以:

    >>> [[re.sub(r'^\d+[ \t]*','',e) for e in sl] for sl in x]
    [['THE B WITH PEANUT 140G'], ['ABC WITH BanaNA 40G'], ['B B Z WITH JElly 250G']]
    

    [ \t] 相当于 POSIX [:blank:] 用于水平空格字符;您可以将\s 用于所有在ASCII 中定义为[ \t\r\n\v\f] 的空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多