어떻게 당신이 만드는 쉼표로 구분된 문자열의 목록에서 문자열?
문제
는 것이 무엇이 선호하는 방법은 문자열을 연결하는 순서는 사이에 각각 두 개의 연속적인 쌍 쉼표가 추가됩니다.즉,당신은 어떻게 지도,예를 들어, [ 'a', 'b', 'c' ]
하기 'a,b,c'
?(사례 [ s ]
고 []
매핑되어야 합 s
고 ''
, 다.)
나는 일반적으로 결국 같은 것을 사용하는 ''.join(map(lambda x: x+',',l))[:-1]
, 이지만,또한 느낌이 다소 만족입니다.
편집:나는 모두에 부끄러워하고 행복하는 해결책이 그렇게 간단합니다.분명히 내가 거의 단서가 무엇하고 있어요.(아마도요""간단한 연결은 과거에 어떻게든 기억 s.join([e1,e2,...])
로 속기 s+e1+e2+...
.)
해결책
myList = ['a','b','c','d']
myString = ",".join(myList )
이 작동하지 않을 경우 목록에 포함되는 숫자.
로 리카르도 Reyes 제 포함되어 있는 경우 문자열이 아닌 형태(등의 정수,수레 bools,없음)다음을 수행:
myList = ','.join(map(str, myList))
다른 팁
왜 맵/lambda 마법?지 않는 이 작품은?
>>>foo = [ 'a', 'b', 'c' ]
>>>print ",".join(foo)
a,b,c
>>>print ",".join([])
>>>print ",".join(['a'])
a
편집:@마크 biek 포인트의 경우 숫자입니다.아마도록 이해:
>>>','.join([str(x) for x in foo])
더 많은"pythonic".
Edit2:감사에 대한 제안.내가 사용하여 발전기 보다는 오히려의 목록을 이해서 미래입니다.
>>>','.join(str(x) for x in foo)
",".join(l)
이 작동하지 않는 경우도 있습니다.내가 사용하는 것이 좋습니다 csv 모듈 StringIO
import StringIO
import csv
l = ['list','of','["""crazy"quotes"and\'',123,'other things']
line = StringIO.StringIO()
writer = csv.writer(line)
writer.writerow(l)
csvcontent = line.getvalue()
# 'list,of,"[""""""crazy""quotes""and\'",123,other things\r\n'
여기에 대체 솔루션에서는 파이썬 3.0 할 수 있는 문자열이 아닌 목록 항목:
>>> alist = ['a', 1, (2, 'b')]
는 표준 방법
>>> ", ".join(map(str, alist)) "a, 1, (2, 'b')"
대체 솔루션
>>> import io >>> s = io.StringIO() >>> print(*alist, file=s, sep=', ', end='') >>> s.getvalue() "a, 1, (2, 'b')"
참고:공간 후에는 쉼표는 의도적인 것입니다.
@베드로는 호프만
를 사용하여 발전기 식의 혜택 또한 생산 반복기만 저장 가져오 itertools.또한,목록을 함축하는 일반적으로 선호하지도,따라서 내가 기대하는 발전기 식의 것을 선호하 imap.
>>> l = [1, "foo", 4 ,"bar"]
>>> ",".join(str(bit) for bit in l)
'1,foo,4,bar'
지 않는 당신이 원하는:
",".join(l)
분명히 그것은 더 복잡해 필요하신 경우에는 견적/탈출 쉼표 등을에는 값입니다.이 경우에는 것이 좋고 csv 모듈에서는 표준 라이브러리:
>>> my_list = ['A', '', '', 'D', 'E',]
>>> ",".join([str(i) for i in my_list if i])
'A,D,E'
my_list
이 포함될 수 있는 모든 유형의 변수입니다.이를 피하는 결과 'A,,,D,E'
.
@jmanning2k 목록을 사용하여 이해력이 있는 단점을 만드는 새로운 임시 목록입니다.더 나은 솔루션을 사용하는 것입니다 itertools.imap 는 반복기를 반환합니다
from itertools import imap
l = [1, "foo", 4 ,"bar"]
",".join(imap(str, l))
변환하기위한 목록의 숫자를 포함하는 다음을 수행:
string = ''.join([str(i) for i in list])
l=['a', 1, 'b', 2]
print str(l)[1:-1]
Output: "'a', 1, 'b', 2"
지 않는 한 나는 목표를 설정했습니다. ','.join(foo)
해야 할 무엇을 요구하고 있습니다.
>>> ','.join([''])
''
>>> ','.join(['s'])
's'
>>> ','.join(['a','b','c'])
'a,b,c'
(편집:로 jmanning2k 인
','.join([str(x) for x in foo])
안정적이고 매우 Pythonic,그 결과 문자열은 어려울 것이 구문 분석하는 경우 요소를 포함할 수 있는 쉼표로 구분--그 시점에서,당신은 당신의 자신의 힘 csv
모듈로,더글러스 점에서 그의 대답이다.)
여기에 예를 들어진 목록
>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [i[0] for i in myList]))
>>> print "Output:", myList
Output: Apple,Orange
더 많은 정확:-
>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [type(i) == list and i[0] for i in myList]))
>>> print "Output:", myList
Output: Apple,Orange
예제 2:-
myList = ['Apple','Orange']
myList = ','.join(map(str, myList))
print "Output:", myList
Output: Apple,Orange
나 csv
도서관은 합리적인 옵션이 여기에,이에 대처하는 모든 csv 사용과 같은 경우에는 쉼표 문자열,etc.
목록을 출력 l
니다.csv file:
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(l) # this will output l as a single row.
그것은 또한 이용 가능 writer.writerows(iterable)
출력하 여러 행 csv.
이 예제와 호환되는 Python3,로 다른 대답을 여기에 사용되는 StringIO
는 파이썬 2.
그냥은 다음과 같습니다:)
String = "Once:Upon:a:Time:A:Long:Time:Ago"
ding = String.split(':')
ring = (" , ").join(ding)
print(ring)
출력:면,시로,,시간,긴 시간 전에
내 두 개의 센트입니다.나는 다음과 같이 간단하는 한 줄의 코드에서는 python:
>>> from itertools import imap, ifilter
>>> l = ['a', '', 'b', 1, None]
>>> ','.join(imap(str, ifilter(lambda x: x, l)))
a,b,1
>>> m = ['a', '', None]
>>> ','.join(imap(str, ifilter(lambda x: x, m)))
'a'
그것은 pythonic,작품을 위해 문자열,숫자,도 빈 문자열입니다.그것은 짧고 요건을 충족한다.목록에 없는 경우가 숫자를 포함,우리가 사용할 수 있는 이 간단한 변화:
>>> ','.join(ifilter(lambda x: x, l))
또한 이 솔루션을 만들지 않는 새로운 목록을 사용하여 반복기,다음과 같@베드로는 호프만 지적(감사합니다).