[英]Looping through python regex matches
這必須比我遇到的更容易。 我的問題是轉動一個看起來像這樣的字符串:
ABC12DEF3G56HIJ7
進入
12 * ABC
3 * DEF
56 * G
7 * HIJ
而且我一生都無法使用 REGEX 匹配設計一組正確的循環。 問題的關鍵是代碼必須是完全通用的,因為我無法假設[AZ]
片段的長度,也無法假設[0-9]
片段的長度。
感謝您的任何幫助!
Python 的re.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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.