পাইথনে আমি কীভাবে একটি স্ট্রিং বিভক্ত করতে এবং পার্স করতে পারি?


107

আমি এই স্ট্রিংটি অজগরে বিভক্ত করার চেষ্টা করছি: 2.7.0_bf4fda703454

আমি সেই স্ট্রিংটিকে আন্ডারস্কোরতে বিভক্ত করতে চাই _যাতে আমি বাম পাশের মানটি ব্যবহার করতে পারি।


partitionস্ট্রিংয়ের পদ্ধতিটি পড়ুন এবং তারপরে আপনার প্রশ্নটি আপডেট করুন।
এস.লট

উত্তর:


140

"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 এবং আরএইচএসকে পৃথক ভেরিয়েবলগুলিতে আনপ্যাক করতে পারেন:

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']

"[Am] +" এর নিয়মিত অভিব্যক্তিটির অর্থ হ'ল ছোট হাতের অক্ষরগুলির 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

যদি এটি সর্বদা একটি এমনকি এলএইচএস / আরএইচএস বিভক্ত হয়ে যায়, আপনি partitionস্ট্রিংয়ে তৈরি পদ্ধতিটিও ব্যবহার করতে পারেন । এটি একটি 3-টিপলটি ফেরত দেয় (LHS, separator, RHS)যেন বিভাজকটি পাওয়া যায় এবং (original_string, '', '')যদি বিভাজক উপস্থিত না থাকে:

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

>>> "shazam".partition("_")
('shazam', '', '')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.