यह एक मूर्खतापूर्ण प्रश्न हो सकता है लेकिन मुझे इसे हल करने का कोई अच्छा तरीका नहीं मिल रहा है। मैं कुछ स्ट्रिंग्स में संख्याओं को कैप्चर करना चाहता हूं जिसमें 3 अंकों के प्रत्येक समूह के बीच एक सफेद स्थान होता है। उदाहरण के लिए "45 000 €"।
मैं कुछ रेगेक्स ऑपरेशन के साथ आसानी से संख्याओं को कैप्चर कर सकता हूं लेकिन मैं सीधे सफेद स्थान को हटाने का प्रबंधन नहीं करता, यानी मुझे "45000" के बजाय "45 000" मिलता है।
import re
digits = re.findall(r"(\d+\s?\d*)", "Salary between 35 000 € and 45 000 €")
print(digits)
रिटर्न:
['35 000', '45 000']
जबकि मैं सीधे चाहता हूं:
['35000', '45000']
बेशक उसके बाद मैं हर नंबर के लिए सफेद जगह को हटाने के लिए सूची समझ का उपयोग कर सकता था लेकिन रेगेक्स के साथ एक और सीधा समाधान होना चाहिए, है ना? मैंने गैर कैप्चरिंग समूह के साथ खेलने या चारों ओर देखने की कोशिश की, लेकिन कोई सफलता नहीं मिली (या तो सफेद स्थान रहता है, या संख्याओं को दो में छोटा कर दिया जाता है)।
आपकी मदद के लिए Thx
1 उत्तर
यह अभिव्यक्ति संभवतः ऐसा कर सकती है:
(?<=\d)\s+(?=\d)
एक re.sub
के साथ, तो हम एक साधारण re.findall
करेंगे।
import re
test_str = "Salary between 35 000 € and 45 000 € 35 000 000 0 0 0 €"
print(re.findall(r"(\d+)", re.sub(r"(?<=\d)\s+(?=\d)", "", test_str)))
उत्पादन
['35000', '45000', '35000000000']
अगर आप एक्सप्लोर करना/सरल बनाना चाहते हैं, तो इस अभिव्यक्ति को इस डेमो के ऊपरी दाएं पैनल पर समझाया गया है / इसे संशोधित करें।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।