Làm cách nào để chuyển đổi chuỗi được phân cách bằng dấu phẩy thành danh sách trong Python?


Câu trả lời:


282

Bạn có thể sử dụng phương thức str.split.

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

Nếu bạn muốn chuyển đổi nó thành một tuple, chỉ cần

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

Nếu bạn đang muốn thêm vào một danh sách, hãy thử điều này:

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

4
Mặc dù cẩn thận, việc tách một chuỗi rỗng không trả về những gì người ta có thể mong đợi: "".split(",")trả về [""](một danh sách có một phần tử, đó là chuỗi rỗng).
johndodo

14

Trong trường hợp số nguyên được bao gồm trong chuỗi, nếu bạn muốn tránh truyền chúng thành inttừng phần riêng lẻ, bạn có thể thực hiện:

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

Nó được gọi là hiểu danh sách , và nó dựa trên ký hiệu bộ xây dựng.

Ví dụ:

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

Bạn có thể sử dụng chức năng này để chuyển đổi các chuỗi ký tự đơn được phân tách bằng dấu phẩy sang danh sách-

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

Hãy xem xét những điều sau đây để xử lý trường hợp của một chuỗi rỗng:

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

Bạn có thể tách chuỗi đó trên ,và trực tiếp lấy danh sách:

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

Đầu ra:

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

Bạn cũng có thể chuyển đổi nó thành một n-tuple:

print(tuple(list1))

Đầu ra:

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


Hy vọng Nó sẽ giải quyết vấn đề nhưng vui lòng thêm giải thích về mã của bạn với nó để người dùng sẽ hiểu hoàn hảo những gì anh ấy / cô ấy thực sự muốn.
Jaimil Patel

Trông giống như một bản sao của câu trả lời đã được chấp nhận (9 năm trước).
Thomas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.