কীভাবে কমা-সীমাবদ্ধ স্ট্রিংটি পাইথনে তালিকায় রূপান্তর করব?


169

একটি স্ট্রিং দেওয়া হয়েছে যা একটি কমমা দ্বারা পৃথককৃত কয়েকটি মানের ক্রম:

mStr = 'A,B,C,D,E' 

আমি স্ট্রিংটিকে কীভাবে একটি তালিকায় রূপান্তর করব?

mList = ['A', 'B', 'C', 'D', 'E']

উত্তর:


282

আপনি str.split পদ্ধতিটি ব্যবহার করতে পারেন।

>>> my_string = 'A,B,C,D,E'
>>> my_list = my_string.split(",")
>>> print my_list
['A', 'B', 'C', 'D', 'E']

আপনি যদি এটিকে একটি টুপলে রূপান্তর করতে চান তবে ঠিক

>>> print tuple(my_list)
('A', 'B', 'C', 'D', 'E')

আপনি যদি একটি তালিকায় যুক্ত হতে চান তবে এটি চেষ্টা করুন:

>>> my_list.append('F')
>>> print my_list
['A', 'B', 'C', 'D', 'E', 'F']

4
সতর্কতা অবলম্বন করে, খালি স্ট্রিংকে বিভক্ত করা যা প্রত্যাশা করে তা প্রত্যাবর্তন করে না: "".split(",")প্রত্যাবর্তন [""](একটি উপাদান সহ একটি তালিকা, যা খালি স্ট্রিং)।
— jhndodo

14

পূর্ণসংখ্যাগুলির ক্ষেত্রে যা স্ট্রিংয়ের সাথে অন্তর্ভুক্ত থাকে, যদি আপনি এগুলি intপৃথকভাবে কাস্ট করা এড়াতে চান তবে আপনি এটি করতে পারেন:

mList = [int(e) if e.isdigit() else e for e in mStr.split(',')]

এটিকে তালিকা অনুধাবন বলা হয় , এবং এটি সেট নির্মাতার স্বরলিপি ভিত্তিক।

উদা:

>>> mStr = "1,A,B,3,4"
>>> mList = [int(e) if e.isdigit() else e for e in mStr.split(',')]
>>> mList
>>> [1,'A','B',3,4]


0

আপনি এই ফাংশনটি কমা-সীমাবদ্ধ একক অক্ষরের স্ট্রিংকে তালিকাতে রূপান্তর করতে ব্যবহার করতে পারেন-

def stringtolist(x):
    mylist=[]
    for i in range(0,len(x),2):
        mylist.append(x[i])
    return mylist

0
#splits string according to delimeters 
'''
Let's make a function that can split a string
into list according the given delimeters. 
example data: cat;dog:greff,snake/
example delimeters: ,;- /|:
'''
def string_to_splitted_array(data,delimeters):
    #result list
    res = []
    # we will add chars into sub_str until
    # reach a delimeter
    sub_str = ''
    for c in data: #iterate over data char by char
        # if we reached a delimeter, we store the result 
        if c in delimeters: 
            # avoid empty strings
            if len(sub_str)>0:
                # looks like a valid string.
                res.append(sub_str)
                # reset sub_str to start over
                sub_str = ''
        else:
            # c is not a deilmeter. then it is 
            # part of the string.
            sub_str += c
    # there may not be delimeter at end of data. 
    # if sub_str is not empty, we should att it to list. 
    if len(sub_str)>0:
        res.append(sub_str)
    # result is in res 
    return res

# test the function. 
delimeters = ',;- /|:'
# read the csv data from console. 
csv_string = input('csv string:')
#lets check if working. 
splitted_array = string_to_splitted_array(csv_string,delimeters)
print(splitted_array)

0

খালি স্ট্রিংয়ের কেসটি পরিচালনা করার জন্য নিম্নলিখিতটি বিবেচনা করুন:

>>> my_string = 'A,B,C,D,E'
>>> my_string.split(",") if my_string else []
['A', 'B', 'C', 'D', 'E']
>>> my_string = ""
>>> my_string.split(",") if my_string else []
[]

-1

আপনি সেই স্ট্রিংটি বিভক্ত করতে পারেন ,এবং সরাসরি একটি তালিকা পেতে পারেন:

mStr = 'A,B,C,D,E'
list1 = mStr.split(',')
print(list1)

আউটপুট:

['A', 'B', 'C', 'D', 'E']

আপনি এটিকে একটি এন-টুপলে রূপান্তর করতে পারেন:

print(tuple(list1))

আউটপুট:

('A', 'B', 'C', 'D', 'E')


আশা করি এটি সমস্যার সমাধান করবে তবে দয়া করে এটি দিয়ে আপনার কোডের ব্যাখ্যা যুক্ত করুন যাতে ব্যবহারকারী সঠিকভাবে বুঝতে পারে যা সে / সে সত্যই চায়।
— জামিল প্যাটেল

ইতিমধ্যে গৃহীত উত্তরের সদৃশ মনে হচ্ছে (9 বছর আগে)।
— থমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.