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


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.