【问题标题】:splitting a string in python based on first occurrence of letter根据第一次出现的字母在python中拆分字符串
【发布时间】:2020-05-23 02:05:25
【问题描述】:

例如,我有字符串'10d45x'

我想将字符串作为输入并分别检索“10d”和“45x”。

一些说明:字母总是可以是 1 个字符的长度,但数字可以更长

我正在尝试探索:

import re
re.split("[a-zA-Z]",'10d45x')

但无法找到正确的参数来得到我想要的东西

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 目前还不清楚您可能会遇到哪些其他模式。您想要的所有组都符合一些数字和字母的模式吗?如果是这样,那就是re.findall(r'\d+\w', s)

标签: python-3.x regex string


【解决方案1】:

试试下面的代码:

选项 1:(感谢 Mark Meyer)

import re
str = '10d45x'
print(re.findall(r'\d+\w', str))

选项:2

str = '10d45x'
final_list = []
temp_list = []
for i in str:
    temp_list.append(i)
    if (i.isalpha()):
        final_list.append("".join(temp_list))
        temp_list = []
print(final_list)
>>> ['10d', '45x']

【讨论】:

  • \w 太笼统了,还包括数字和下划线,用[A-Za-z]
【解决方案2】:

你可以拆分直接向后看一个字母和向前看一个数字:

>>> re.split(r'(?<=[a-zA-Z])(?=\d)', '10d45x')
['10d', '45x']

你也可以捕获而不是拆分:

>>> re.findall(r'(\d+[a-zA=Z])', '10d45x')
['10d', '45x']

【讨论】:

    猜你喜欢
    • 2021-01-29
    • 2016-06-07
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多