파이썬에서 쉼표로 구분 된 문자열을 목록으로 변환하는 방법은 무엇입니까?


답변:


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(",")반환 [""](빈 문자열 하나 개의 요소와 목록을).
johndodo

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

n- 튜플로 변환 할 수도 있습니다.

print(tuple(list1))

산출:

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


희망 그것은 문제를 해결하지만 코드에 대한 설명을 추가하여 사용자가 실제로 원하는 것을 완벽하게 이해할 수 있도록하십시오.
Jaimil Patel

이미 받아 들여진 답변 (9 년 전) 의 사본처럼 보입니다 .
토마스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.