Virgülle ayrılmış dize Python'da listeye nasıl dönüştürülür?


Yanıtlar:


282

Str.split yöntemini kullanabilirsiniz.

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

Eğer onu bir demete dönüştürmek istiyorsanız,

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

Bir listeye eklemek istiyorsanız, şunu deneyin:

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

4
Dikkatli olun, boş bir dizeyi bölmek beklediğinizi "".split(",")döndürmez : döndürür [""](bir öğeye sahip, boş dizge olan bir liste).
johndodo

14

Dizeye dahil edilen tamsayılarda, bunları intayrı ayrı yayınlamaktan kaçınmak istiyorsanız şunları yapabilirsiniz:

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

Buna liste anlama denir ve küme oluşturucu gösterimine dayanır.

örn:

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

5
>>> some_string='A,B,C,D,E'
>>> new_tuple= tuple(some_string.split(','))
>>> new_tuple
('A', 'B', 'C', 'D', 'E')

0

Virgülle ayrılmış tek karakter dizelerini listeye dönüştürmek için bu işlevi kullanabilirsiniz.

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

Boş bir dizenin durumunu işlemek için aşağıdakileri göz önünde bulundurun:

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

Bu dizeyi bölebilir ,ve doğrudan bir liste alabilirsiniz:

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

Çıktı:

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

Ayrıca n-demetine de dönüştürebilirsiniz:

print(tuple(list1))

Çıktı:

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


Umarım sorunu çözer, ancak kullanıcı ile kodunun açıklamasını ekleyin, böylece kullanıcı gerçekten istediği mükemmel anlayışı elde edecektir.
Jaimil Patel

Zaten kabul edilen cevabın bir kopyası gibi görünüyor (9 yıl önce).
Thomas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.