문자 목록을 문자열로 변환
문자 목록이있는 경우 :
a = ['a','b','c','d']
단일 문자열로 어떻게 변환합니까?
a = 'abcd'
join
빈 문자열 의 메소드를 사용하여 다음 과 같이 빈 문자열과 함께 모든 문자열을 결합하십시오.
>>> a = ['a', 'b', 'c', 'd']
>>> ''.join(a)
'abcd'
이것은 JavaScript 및 Ruby와 같은 많은 인기있는 언어에서 작동합니다. 왜 파이썬에서는 그렇지 않습니까?
>>> ['a', 'b', 'c'].join('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'join'
이상하게도 파이썬에서는 join
메소드가 str
클래스에 있습니다.
# this is the Python way
"".join(['a','b','c','d'])
JavaScript 나 다른 인기있는 스크립트 언어와 같이 객체 join
의 메소드가 아닌 이유 는 무엇 list
입니까? 파이썬 커뮤니티가 어떻게 생각하는지에 대한 예입니다. join은 문자열을 반환하므로 문자열은 목록 클래스가 아닌 문자열 클래스에 배치되어야합니다. 따라서 str.join(list)
메서드는 다음을 의미합니다. str
분리 자로 사용하여 목록을 새 문자열로 조인합니다 (이 경우 str
빈 문자열 임).
어떻게 든 나는 잠시 후이 사고 방식을 좋아해야했다. 파이썬 디자인에서 많은 것들에 대해 불평 할 수는 있지만 일관성에 대해서는 불평 할 수 없습니다.
Python 인터프리터가 오래된 경우 (예 : 일부 이전 Linux 배포판에서 일반적인 1.5.2) join()
이전 문자열 객체에서 메소드로 사용 가능 하지 않을 수 있으며 대신 문자열 모듈을 사용해야합니다. 예:
a = ['a', 'b', 'c', 'd']
try:
b = ''.join(a)
except AttributeError:
import string
b = string.join(a, '')
문자열 b
은입니다 'abcd'
.
가장 빠른 방법 일 수 있습니다.
>> from array import array
>> a = ['a','b','c','d']
>> array('B', map(ord,a)).tostring()
'abcd'
감소 기능도 작동합니다
import operator
h=['a','b','c','d']
reduce(operator.add, h)
'abcd'
h = ['a','b','c','d','e','f']
g = ''
for f in h:
g = g + f
>>> g
'abcdef'
join
빈 구분 기호와 함께 사용
h = ['a','b','c','d','e','f']
print ''.join(h)
또는 연산자 reduce
와 함께 사용add
import operator
h=['a','b','c','d']
reduce(operator.add, h)
목록에 숫자가 포함 된 경우 map()
와 함께 사용할 수 있습니다 join()
.
예 :
arr = [3, 30, 34, 5, 9]
''.join(map(str,arr))
>> 3303459
str.join
가장 자연스러운 방법 외에도 모든 요소를 한 번에 작성 io.StringIO
하고 사용하는 것이 가능 writelines
합니다.
import io
a = ['a','b','c','d']
out = io.StringIO()
out.writelines(a)
print(out.getvalue())
인쇄물:
abcd
생성기 함수 또는 a tuple
또는 a 가 아닌 iterable과 함께이 접근법을 사용 하면 올바른 크기를 한 번에 할당하는 list
임시 목록 작성을 저장합니다 join
(1 문자 문자열 목록은 메모리 측면에서 매우 비쌉니다) ).
메모리가 부족하고 느리게 평가 된 객체를 입력으로 사용하는 경우이 방법이 가장 좋습니다.
다음 operator.concat()
과 같이 사용할 수도 있습니다 .
>>> from operator import concat
>>> a = ['a', 'b', 'c', 'd']
>>> reduce(concat, a)
'abcd'
Python 3을 사용하는 경우 앞에 추가해야합니다.
>>> from functools import reduce
내장 reduce()
이 Python 3에서 제거되어 현재에 살고 있기 때문에 functools.reduce()
.
str = ''
for letter in a:
str += letter
print str
참고 URL : https://stackoverflow.com/questions/4481724/convert-a-list-of-characters-into-a-string
'development' 카테고리의 다른 글
Javascript / Chrome-웹킷 관리자에서 객체를 코드로 복사하는 방법 (0) | 2020.02.22 |
---|---|
C ++에서 현재 시간과 날짜를 얻는 방법? (0) | 2020.02.22 |
원격 브랜치에서 커밋을 영구적으로 제거하는 방법 (0) | 2020.02.22 |
UUID는 얼마나 독특합니까? (0) | 2020.02.22 |
SVG 채우기 색상 투명도 / 알파? (0) | 2020.02.22 |