मैं पायथन में एक स्ट्रिंग को कैसे विभाजित और पार्स कर सकता हूं?


107

मैं इस स्ट्रिंग को अजगर में विभाजित करने की कोशिश कर रहा हूं: 2.7.0_bf4fda703454

मैं उस स्ट्रिंग को अंडरस्कोर पर विभाजित करना चाहता हूं _ताकि मैं बाईं ओर के मूल्य का उपयोग कर सकूं।


partitionस्ट्रिंग की विधि पर पढ़ें , और फिर अपना प्रश्न अपडेट करें।
एस.लूट।

जवाबों:


141

"2.7.0_bf4fda703454".split("_") तार की एक सूची देता है:

In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']

यह हर अंडरस्कोर पर स्ट्रिंग को विभाजित करता है । यदि आप चाहते हैं कि यह पहले विभाजन के बाद बंद हो जाए, तो उपयोग करें "2.7.0_bf4fda703454".split("_", 1)

यदि आप इस तथ्य के लिए जानते हैं कि स्ट्रिंग में एक अंडरस्कोर है, तो आप LHS और RHS को अलग-अलग चर में भी खोल सकते हैं:

In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)

In [9]: lhs
Out[9]: '2.7.0'

In [10]: rhs
Out[10]: 'bf4fda703454'

एक विकल्प का उपयोग करना है partition()। उपयोग अंतिम उदाहरण के समान है, सिवाय इसके कि यह दो के बजाय तीन घटक देता है। मुख्य लाभ यह है कि यदि स्ट्रिंग विभाजक नहीं है, तो यह विधि विफल नहीं होती है।


80

पाइथन स्ट्रिंग पार्सिंग वॉकथ्रू

एक स्ट्रिंग को अंतरिक्ष में विभाजित करें, एक सूची प्राप्त करें, इसके प्रकार दिखाएं, इसे प्रिंट करें:

el@apollo:~/foo$ python
>>> mystring = "What does the fox say?"

>>> mylist = mystring.split(" ")

>>> print type(mylist)
<type 'list'>

>>> print mylist
['What', 'does', 'the', 'fox', 'say?']

यदि आपके पास एक दूसरे के बगल में दो सीमांकक हैं, तो रिक्त स्ट्रिंग मान ली गई है:

el@apollo:~/foo$ python
>>> mystring = "its  so   fluffy   im gonna    DIE!!!"

>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']

अंडरस्कोर पर एक स्ट्रिंग को विभाजित करें और सूची में 5 वें आइटम को पकड़ो:

el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."

>>> mystring.split("_")[4]
"Kowalski's"

एक में कई रिक्त स्थान को संक्षिप्त करें

el@apollo:~/foo$ python
>>> mystring = 'collapse    these       spaces'

>>> mycollapsedstring = ' '.join(mystring.split())

>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']

जब आप पायथन के विभाजन की विधि के लिए कोई पैरामीटर नहीं देते हैं, तो दस्तावेज़ीकरण कहता है : "लगातार व्हाट्सएप के रन को एक एकल विभाजक के रूप में माना जाता है, और यदि स्ट्रिंग में अग्रणी या अनुगामी व्हिस्पस्पेस होता है, तो परिणाम प्रारंभ या अंत में कोई खाली स्ट्रिंग नहीं होगा"।

अपने टोपी लड़कों पर पकड़ो, एक नियमित अभिव्यक्ति पर पार्स करें:

el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']

नियमित अभिव्यक्ति "[बजे]" का अर्थ है छोटे अक्षरों aके माध्यम से mहै कि हो एक या अधिक बार परिसीमक के रूप में मिलान किया जाता है। reएक पुस्तकालय आयात किया जाना है।

या यदि आप एक समय में एक आइटम को चूमना चाहते हैं:

el@apollo:~/foo$ python
>>> mystring = "theres coffee in that nebula"

>>> mytuple = mystring.partition(" ")

>>> print type(mytuple)
<type 'tuple'>

>>> print mytuple
('theres', ' ', 'coffee in that nebula')

>>> print mytuple[0]
theres

>>> print mytuple[2]
coffee in that nebula

18

यदि यह हमेशा एक समान LHS / RHS विभाजन होने जा रहा है, तो आप उस partitionविधि का भी उपयोग कर सकते हैं जिसे स्ट्रिंग्स में बनाया गया है। यह 3-टपल देता है जैसे (LHS, separator, RHS)कि विभाजक पाया जाता है, और (original_string, '', '')यदि विभाजक मौजूद नहीं था:

>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')

>>> "shazam".partition("_")
('shazam', '', '')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.