어떻게 당신이 만드는 쉼표로 구분된 문자열의 목록에서 문자열?

StackOverflow https://stackoverflow.com/questions/44778

  •  09-06-2019
  •  | 
  •  

문제

는 것이 무엇이 선호하는 방법은 문자열을 연결하는 순서는 사이에 각각 두 개의 연속적인 쌍 쉼표가 추가됩니다.즉,당신은 어떻게 지도,예를 들어, [ '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 모듈에서는 표준 라이브러리:

https://docs.python.org/library/csv.html

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

또한 이 솔루션을 만들지 않는 새로운 목록을 사용하여 반복기,다음과 같@베드로는 호프만 지적(감사합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top