如何在Python中提取字符串的某些部分?

2024-10-08 22:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有三根弦:

abc534loif

tvd645kgjf

tv96fjbd_gfgf

还有三个清单:

  • beginning只捕获字符串“the name”的第一部分
  • middle只捕获数字
  • end只包含数字部分之后的其余字符

我如何以最有效的方式完成这项工作?在


Tags: the字符串namemiddle方式数字字符end
3条回答

使用正则表达式?在

>>> import re
>>> strings = 'abc534loif tvd645kgjf tv96fjbd_gfgf'.split()
>>> for s in strings:
...   for match in re.finditer(r'\b([a-z]+)(\d+)(.+?)\b', s):
...     print match.groups()
... 
('abc', '534', 'loif')
('tvd', '645', 'kgjf')
('tv', '96', 'fjbd_gfgf')

我猜你在找re.findall

strs = """
    abc534loif
    tvd645kgjf
    tv96fjbd_gfgf
"""

import re
print re.findall(r'\b(\w+?)(\d+)(\w+)', strs)

>> [('abc', '534', 'loif'), ('tvd', '645', 'kgjf'), ('tv', '96', 'fjbd_gfgf')]

这是一种语言不可知论的方法,旨在提高效率:

  1. 找到字符串中的第一个数字并保存其位置p0
  2. 找到字符串中的最后一位并保存其位置p1
  3. 0p0-1提取子串到beginning
  4. 将子字符串从p0提取到p1middle
  5. 将子串从p1+1提取到length-1end

相关问题 更多 >

    热门问题