【问题标题】:Split a string using Python使用 Python 拆分字符串
【发布时间】:2015-02-03 15:25:44
【问题描述】:

我的字符串是

"S001P001Q001"

我想把字符串拆分成:

['S001', 'P001', 'Q001']

我试过这个步骤:

test_re = re.compile("(P?[^P]+)") 
result_str = test_re.findall(str1)

【问题讨论】:

  • 怎么样?在长度为 4 的子字符串中,或​​在每个数字块之后,或在每个 1 之后,或在每个字母之前,或 ...
  • 你试过什么?任何事物?这实际上是大多数 Python 教程中的第一课。
  • 我想在每个字母之前分割字符串?
  • @Ayan 为什么是问号,你不确定吗?
  • 这里是re.findall(r'[A-Za-z][^A-Za-z]*', string)

标签: python regex string python-2.7 split


【解决方案1】:

就像我在评论中所说,您可以使用 re.findall 代替 re.split 方法。

>>> s = "S001P001Q001"
>>> re.findall(r'[A-Za-z][^A-Za-z]*', s)
['S001', 'P001', 'Q001']
>>> re.findall(r'[A-Za-z]\d*', s)
['S001', 'P001', 'Q001']

[A-Za-z] - 匹配字母。

[^A-Za-z]* - 匹配零个或多个非字母字符。

\d* - 匹配零个或多个数字字符。

所以上面的findall 函数从一个字母开始匹配,贪婪地匹配所有零个或多个非字母字符,直到识别出一个字母。一旦找到一个字母,它就会停止匹配。现在从第二个字母表开始,它将所有字符匹配到下一个字母表。同样,它继续。

【讨论】:

  • 我从你的回答中得到了解决方案。你能解释一下吗?
  • 如果字符串包含特殊字符,我将如何修改分隔符?我的意思是,在特殊字符之前拆分字符串。
猜你喜欢
  • 2014-01-20
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多