개발/Python

쉼표로 구분 된 항목이 있는 문자열을 Python의 목록으로 변환하는 방법은 무엇입니까?

MinorMan 2021. 4. 17. 13:47
반응형

<질문>

문자열을 목록으로 어떻게 변환합니까?

문자열이text = "a,b,c". 변환 후text == ['a', 'b', 'c']그리고 바라건대text[0] == 'a',text[1] == 'b'?


<답변1>

이렇게 :

>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]

또는 다음을 사용할 수 있습니다.eval()문자열이 안전하다고 믿는 경우 :

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')

<답변2>

기존 답변에 추가하기 위해 : 바라건대, 앞으로 이와 같은 것을 더 만날 것입니다.

>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'

하지만 당신이 다루는 것은지금, @로 이동Cameron의 대답.

>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'

<답변3>

다음 Python 코드는 문자열을 문자열 목록으로 변환합니다.

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)

<답변4>

파이썬에서는 문자열과 목록이 매우 유사하기 때문에 문자열을 목록으로 변환 할 필요가 거의 없습니다.

문자 배열이어야하는 문자열이있는 경우 다음을 수행하십시오.

In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']

문자열은 파이썬의 목록과 매우 비슷합니다.

In [3]: x[0]
Out[3]: 'f'
In [4]: for i in range(len(x)):
...:     print x[i]
...:     
f
o
o
b
a
r

문자열은 목록입니다. 거의.


<답변5>

공백으로 나누고 싶은 경우에는.split():

a = 'mary had a little lamb'
z = a.split()
print z

산출:

['mary', 'had', 'a', 'little', 'lamb'] 

<답변6>

실제로 배열을 원하는 경우 :

>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'

배열이 필요하지 않고 문자를 인덱스로만보고 싶다면, 문자열은 불변이라는 사실을 제외하고 목록과 마찬가지로 반복 가능하다는 것을 기억하십시오.

>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'

<답변7>

m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

<답변8>

모든 대답은 훌륭합니다. 목록 이해라는 또 다른 방법이 있습니다. 아래 솔루션을 참조하십시오.

u = "UUUDDD"

lst = [x for x in u]

쉼표로 구분 된 목록의 경우 다음을 수행하십시오.

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]

<답변9>

나는 보통 다음을 사용합니다.

l = [ word.strip() for word in text.split(',') ]

그만큼strip단어 주위의 공백을 제거하십시오.


<답변10>

변환하려면string형태를 갖는a="[[1, 3], [2, -6]]"아직 최적화되지 않은 코드를 작성했습니다.

matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
    row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
    matrixAr.append(row)
print matrixAr

<답변11>

# to strip `,` and `.` from a string ->

>>> 'a,b,c.'.translate(None, ',.')
'abc'

내장 된 것을 사용해야합니다translate문자열에 대한 방법.

유형help('abc'.translate)자세한 내용은 Python 쉘에서.


<답변12>

기능적 Python 사용 :

text=filter(lambda x:x!=',',map(str,text))

<답변13>

예 1

>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]

예 2

>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]

<답변14>

split()여기 당신의 친구입니다. 몇 가지 측면을 다룰 것입니다.split()다른 답변에서 다루지 않습니다.

  • 인수가 전달되지 않은 경우split(), 공백 문자 (공백, 탭 및 개행)를 기반으로 문자열을 분할합니다. 선행 및 후행 공백은 무시됩니다. 또한 연속 된 공백은 단일 구분 기호로 처리됩니다.

예:

>>> "   \t\t\none  two    three\t\t\tfour\nfive\n\n".split()
['one', 'two', 'three', 'four', 'five']
  • 단일 문자 구분 기호가 전달되면split()기본 동작과는 매우 다르게 동작합니다. 이 경우 선행 / 후행 구분 기호는 무시되지 않으며 반복 구분 기호도 하나로 "결합"되지 않습니다.

예:

>>> ",,one,two,three,,\n four\tfive".split(',')
['', '', 'one', 'two', 'three', '', '\n four\tfive']

따라서 공백이 아닌 구분 기호를 기반으로 문자열을 분할하는 동안 공백을 제거하려면 다음 구문을 사용하십시오.

words = [item.strip() for item in string.split(',')]
  • 다중 문자 문자열이 구분 기호로 전달되면 문자 클래스 나 구분 기호 집합이 아닌 단일 구분 기호로 간주됩니다.

예:

>>> "one,two,three,,four".split(',,')
['one,two,three', 'four']

여러 구분자를 하나로 통합하려면 다음을 사용해야합니다.re.split(regex, string)접근하다. 아래 관련 게시물을 참조하십시오.

반응형