संपादित करें: इसके अलावा parse
के बारे में और parmatter
थोड़ा और अधिक जानकारी के लिए this answer देखते हैं।
pip install parse
इस तरह इस्तेमाल किया जा सकता:
pypi पैकेज parse
इस उद्देश्य अच्छी तरह से कार्य करता है
>>> import parse
>>> result=parse.parse('Version {0}.{1}.{2}\n', 'Version 1.15.6\n')
<Result ('1', '15', '6') {}>
>>> values=list(result)
>>> print(values)
['1', '15', '6']
ध्यान दें कि the docs sayparse
पैकेज बिल्कुल डिफ़ॉल्ट रूप से format specification mini-language का अनुकरण नहीं करता है; यह re
द्वारा निर्दिष्ट कुछ प्रकार-संकेतकों का भी उपयोग करता है। विशेष नोट यह है कि s
का अर्थ डिफ़ॉल्ट रूप से "व्हाइटस्पेस" है, str
के बजाय। यह आसानी से str
को s
के लिए डिफ़ॉल्ट प्रकार बदलने (extra_types
का प्रयोग करके) द्वारा प्रारूप विनिर्देश के अनुरूप होना करने के लिए संशोधित किया जा सकता है:
result = parse.parse(format_str, string, extra_types=dict(s=str))
यहाँ निर्मित का उपयोग कर वर्ग string.Formatter
के एक संशोधन के लिए एक वैचारिक विचार है parse
पैकेज unformat
क्षमता जोड़ने के लिए है कि मैं अपने आप को इस्तेमाल किया है:
import parse
from string import Formatter
class Unformatter(Formatter):
'''A parsable formatter.'''
def unformat(self, format, string, extra_types=dict(s=str), evaluate_result=True):
return parse.parse(format, string, extra_types, evaluate_result)
unformat.__doc__ = parse.Parser.parse.__doc__
महत्वपूर्ण: विधि नाम parse
पहले से ही Formatter
वर्ग द्वारा उपयोग में है, तो मैंको चुना है विवाद से बचने के लिए।
अद्यतन: आप इसे इस तरह उपयोग कर सकते हैं- string.Formatter
कक्षा के समान ही।
प्रारूपण ('{:d} {:d}'.format(1, 2)
के समान):
>>> formatter = Unformatter()
>>> s = formatter.format('{:d} {:d}', 1, 2)
>>> s
'1 2'
Unformatting:
>>> result = formatter.unformat('{:d} {:d}', s)
>>> result
<Result (1, 2) {}>
>>> tuple(result)
(1, 2)
इस रूप में ऊपर दिखाए गए बहुत सीमित उपयोग की निश्चित रूप से है। हालांकि, मैंने एक पीपीआई पैकेज (parmatter - मूल रूप से अपने स्वयं के उपयोग के लिए एक प्रोजेक्ट रखा है लेकिन शायद दूसरों को यह उपयोगी लगेगा) जो इस विचार को और अधिक उपयोगी काम करने के तरीके के बारे में कुछ विचारों की पड़ताल करता है। पैकेज उपरोक्त parse
पैकेज पर भारी निर्भर करता है।
मुझे नीचे कुछ जवाब दिखाई देते हैं जो आपकी समस्या के लिए सीधे हैं। लेकिन एक बेहतर समाधान नियमित अभिव्यक्ति imho का उपयोग करना होगा। –
यह [स्कैनफ़] के लिए एक अच्छा उपयोग प्रतीत होता है (http://code.activestate.com/recipes/502213-simple-scanf-implementation/) सी-शैली – Gaius