Wie konvertiere ich eine durch Kommas getrennte Zeichenfolge in eine Liste in Python?


Antworten:


280

Sie können die str.split-Methode verwenden.

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

Wenn Sie es in ein Tupel konvertieren möchten, einfach

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

Wenn Sie an eine Liste anhängen möchten, versuchen Sie Folgendes:

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

4
Aber vorsichtig, Splitting eine leere Zeichenfolge nicht zurück , was man hätte erwarten können: "".split(",")Erträge [""](eine Liste mit einem Element, das leere Zeichenfolge).
Johndodo

14

Bei Ganzzahlen, die in der Zeichenfolge enthalten sind, können Sie Folgendes inttun , wenn Sie vermeiden möchten, sie einzeln umzuwandeln:

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

Es wird als Listenverständnis bezeichnet und basiert auf der Notation des Set Builders.

Ex:

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

Mit dieser Funktion können Sie durch Kommas getrennte einzelne Zeichenfolgen in Listenzeichen konvertieren.

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

Beachten Sie Folgendes, um den Fall einer leeren Zeichenfolge zu behandeln:

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

Sie können diese Zeichenfolge aufteilen ,und direkt eine Liste erhalten:

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

Ausgabe:

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

Sie können es auch in ein n-Tupel konvertieren:

print(tuple(list1))

Ausgabe:

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


Hoffe, es wird das Problem lösen, aber bitte fügen Sie eine Erklärung Ihres Codes hinzu, damit der Benutzer ein perfektes Verständnis dafür erhält, was er wirklich will.
Jaimil Patel

Sieht aus wie ein Duplikat der bereits akzeptierten Antwort (vor 9 Jahren).
Thomas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.