这必须比我遇到的更容易。我的问题是转动一个看起来像这样的字符串:
ABC12DEF3G56HIJ7
进入
12 * ABC
3 * DEF
56 * G
7 * HIJ
而且我一辈子都无法使用 REGEX 匹配设计一组正确的循环。问题的症结在于代码必须是完全通用的,因为我无法假设[A-Z]
片段会有多长,也无法假设片段会有多长[0-9]
。
感谢您的任何帮助!
这必须比我遇到的更容易。我的问题是转动一个看起来像这样的字符串:
ABC12DEF3G56HIJ7
进入
12 * ABC
3 * DEF
56 * G
7 * HIJ
而且我一辈子都无法使用 REGEX 匹配设计一组正确的循环。问题的症结在于代码必须是完全通用的,因为我无法假设[A-Z]
片段会有多长,也无法假设片段会有多长[0-9]
。
感谢您的任何帮助!
Pythonre.findall
应该适合你。
import re
s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')
for (letters, numbers) in re.findall(pattern, s):
print(numbers, '*', letters)
re.finditer
如果您的数据集很大,最好使用它,因为这样可以减少内存消耗(findall()
返回所有结果的列表,finditer()
逐一找到它们)。
import re
s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')
for m in re.finditer(pattern, s):
print m.group(2), '*', m.group(1)