পাইথন স্ট্রিংয়ের সর্বশেষ ডিলিমিটারে বিভক্ত?


203

স্ট্রিংয়ের মধ্যে ডিলিমিটারের শেষ ঘটনাটি স্ট্রিংকে বিভক্ত করার জন্য প্রস্তাবিত পাইথন আইডিয়ামটি কী ? উদাহরণ:

# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']

# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']

mysplitএকটি দ্বিতীয় যুক্তি নেয় যা বিভাজনে ডিলিমিটারের ঘটনা। নিয়মিত তালিকা সূচকের মতো, -1শেষ থেকে শেষের মানে। কিভাবে এই কাজ করা যেতে পারে?

উত্তর:


355

ব্যবহার করুন .rsplit() বা .rpartition()পরিবর্তে:

s.rsplit(',', 1)
s.rpartition(',')

str.rsplit()আপনাকে কতবার বিভক্ত করতে হবে তা নির্দিষ্ট করতে দেয়, যখন str.rpartition()কেবল একবারে বিভক্ত হয় তবে সর্বদা একটি নির্দিষ্ট সংখ্যক উপাদান (উপসর্গ, ডিলিমিটার এবং পোস্টফিক্স) প্রদান করে এবং একক বিভাজনের ক্ষেত্রে দ্রুত হয়।

ডেমো:

>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')

উভয় পদ্ধতি স্ট্রিংয়ের ডান দিক থেকে বিভাজন শুরু করে; str.rsplit()সর্বাধিক দ্বিতীয় আর্গুমেন্ট হিসাবে দেওয়ার মাধ্যমে আপনি কেবল ডান-হাতের সর্বাধিক ঘটনাগুলিকে বিভক্ত করতে পারেন।


19

আপনি আরএসপিপ্লিট ব্যবহার করতে পারেন

string.rsplit('delimeter',1)[1]

বিপরীত থেকে স্ট্রিং পেতে।


5

আমি এটি মজা করার জন্যই করেছি

    >>> s = 'a,b,c,d'
    >>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
    ['a,b,c', 'd']

সতর্কতা : নীচে প্রথম মন্তব্যে পড়ুন যেখানে এই উত্তরটি ভুল হতে পারে।


2
'কেবল মজাদার জন্য' তবে খুব ভুল, কারণ যদি ডিলিমিটারটি কেবল একটি একক চরিত্র বা পুনরাবৃত্তিযুক্ত চরিত্র না হয় তবে আপনার বিভাজনগুলি সঠিকভাবে ভুল পয়েন্টগুলি পৃথক করে নেবে।
মার্টিজন পিটারস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.