我正在嘗試提取2這些鏈接中的第一個數字:
https://primer.text.com/sdfg/8406758680-345386743-DSS1-S JasdOdsfrIwetds-Osdgf/
https://primer.text.com/sdfg/8945879094-849328844-DPE-S JsdfeOIert-Isdfu/
https://primer.text.com/sdfg/8493093053-292494834-QW23#Wsdfg#IprfdUiojn2Asdfg-Werts/
輸出應該是這樣的:
id1 = ['8406758680', '8945879094','8493093053']
id2 = ['345386743', '849328844', '292494834']
我正在嘗試使用該re模塊來做到這一點。
請告訴我該怎么做。
這是我到目前為止的代碼片段:
def GetUrlClassId(UrlInPut):
ClassID = ''
for i in UrlInPut:
if i.isdigit():
ClassID =i
elif ClassID !='':
return int(ClassID)
return ""
def GetUrlInstanceID(UrlInPut):
InstanceId = ''
ClassID = 0
for i in UrlInPut:
if i.isdigit() and ClassID==1:
InstanceId =i
elif InstanceId !='':
return int(InstanceId)
if i == '-':
ClassID =1
return ""
我不想使用這樣的東西。我想使用正則運算式。
uj5u.com熱心網友回復:
正則運算式模式:/(\d{10})-(\d{9})需要括號來標識數字組,{}指定重復的確切出現,doc。
# urls separated by a white space
urls = 'https://primer.text.com/sdfg/8406758680-345386743-DSS1-S JasdOdsfrIwetds-Osdgf/ https://primer.text.com/sdfg/8945879094-849328844-DPE-S JsdfeOIert-Isdfu/ https://primer.text.com/sdfg/8493093053-292494834-QW23#Wsdfg#IprfdUiojn2Asdfg-Werts/'
urls = urls.split() # as list
import re
ids = [re.search(r'/(\d{10})-(\d{9})', url).groups() for url in urls]
print(list(zip(*ids)))
輸出
[('8406758680', '8945879094', '8493093053'), ('345386743', '849328844', '292494834')]
uj5u.com熱心網友回復:
\d 使用正則運算式,您可以在基本 URL 上進行文字匹配,然后使用(\d匹配 0-9, 匹配至少一個正在進行的組)捕獲兩組多位數字。re.findall回傳匹配組的串列。
import re
l1 = "https://primer.text.com/sdfg/8406758680-345386743-DSS1-S JasdOdsfrIwetds-Osdgf/"
l2 = "https://primer.text.com/sdfg/8945879094-849328844-DPE-S JsdfeOIert-Isdfu/"
l3 = "https://primer.text.com/sdfg/8493093053-292494834-QW23#Wsdfg#IprfdUiojn2Asdfg-Werts/"
for l in [l1, l2, l3]:
result = re.findall(r'https://primer.text.com/sdfg/(\d )-(\d )', l)
print(result)
輸出:
[('8406758680', '345386743')]
[('8945879094', '849328844')]
[('8493093053', '292494834')]
從這里開始,重新格式化為您想要的資料結構應該足夠簡單(使用zip或其他東西)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/453902.html
上一篇:正則運算式不遵循給定長度
