मैं उन मानों की सूची प्राप्त करने का प्रयास कर रहा हूं जिनमें निम्न संरचना है: शब्द संख्या संख्या संख्याओं के भाग में ठीक दो संख्याएं हैं और दूसरे में फ़्लोटिंग मान हैं। यहाँ एक उदाहरण है

abcd 01 23,456,789 efgh 01 23,456,789

यह मैं मेरा वर्तमान पैटर्न:

re.findall("([a-zá-úA-Z]+)([0-9,.][0-9,.])([0-9,.]+)"

लेकिन यह काम नहीं कर रहा है। बस मुझे दो []

इसका परिणाम होगा:

[ abcd 01 23,456,789, 
efgh 01 23,456,789 ]

धन्यवाद।

-1
ambigus9 21 जून 2019, 18:49

2 जवाब

सबसे बढ़िया उत्तर

निम्नलिखित समाधान पर विचार करें:

import re

data = 'abcd 01 23,456,789 efgh 01 23,456,789'
pattern = re.compile(r'[a-zá-úA-z]+\s[0-9]{2}\s[0-9,]+')
matches = re.findall(pattern, data)
1
BramAppel 21 जून 2019, 18:59

जैसा कि @स्कॉट हंटर ने टिप्पणियों में उल्लेख किया है, आप स्पेस भूल गए हैं। बस उन्हें जोड़ने से काम हो जाता है।

निम्नलिखित रेगेक्स एक निश्चित लंबाई नहीं मानता है, यह थोड़ा और मजबूत है।

import re

data = "abcd 01 23,456,789 efgh 01 23,456,789"

output = re.findall("([a-zá-úA-Z]+)\s(\d+)\s(\d+[,]\d+[,]\d+)", data)

print(output)
# [('abcd', '01', '23,456,789'), ('efgh', '01', '23,456,789')]
2
Alexandre B. 21 जून 2019, 19:10