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']
Matt Williamson
quelle
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]
Camilo Celis Guzman
quelle
5
>>> some_string='A,B,C,D,E'
>>> new_tuple= tuple(some_string.split(','))
>>> new_tuple
('A', 'B', 'C', 'D', 'E')
Raymond Hettinger
quelle
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
Hemang Jalali
quelle
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)
ozzy
quelle
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 []
[]
Ido Savion
quelle
-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')

Crispen Gari
quelle
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