2010-12-05 4 views
3

에서 삭제 :파이썬 내가이 3 개 문자열이 문자열

YELLOW, SMALL, 스트레치, 성인, T21fdsfdsfs
YELLOW, SMALL, 스트레치, 성인, Tdsfs
YELLOW, SMALL, 스트레치, 성인, TD

쉼표가 포함 된 마지막 , 이후의 모든 항목을 제거하고 싶습니다. 그래서 나는이 부분들을 제거하고 싶습니다. ,T21fdsfdsfs, ,Tdsfs 그리고 TD. 파이썬에서 어떻게 할 수 있습니까?

답변

6

수 없습니다. 보관하려는 조각으로 새 문자열을 만듭니다.

','.join(s.split(',')[:4]) 
+6

당신은 또한 사용할 수 있습니다 -1 대신 4 단지 마지막 부분을 제거 할 거기에 얼마나 많은 부품 모르는 경우. – istruble

+0

-1 왜냐하면 Cristian은 실제로 IMO에 대해 올바른 생각을 가지고 있기 때문입니다. 내 코드에서 여러 번 동일한 작업을 수행했습니다. –

+0

@ Karl Knechtel : 이그나시오는 처음 네 개의 필드 만 필요하다고 가정하고 나머지는 쓰레기라고 생각합니다.하지만 [hssss] (http://stackoverflow.com/users/530988/hssss) 쪽으로. –

5
s.rsplit(',', 1)[0] 

어쨌든, 나는이 문제에 대해 더 적합 할 수 있습니다, 너무 Ignacio Vazquez-Abrams's answer을 살펴 가지고하는 것이 좋습니다. The Zen of Python에 따르면

+2

가변적 인 쉼표가있는 경우 이것이 깨지지 않는 해결책입니다. 이그나시오의 답을 수정하면이 기능이 있지만이 문자열은 여전히 ​​중간 문자열이 적습니다. – aaronasterling

3

:

one--과 그것을 할 바람직 하나 --obvious 방법이 있어야합니다.

는 ... 그래서 여기 rpartition을 사용하는 세 번째입니다 :

>>> for item in catalogue: 
...  print item.rpartition(',')[0] 
... 
YELLOW,SMALL,STRETCH,ADULT 
YELLOW,SMALL,STRETCH,ADULT 
YELLOW,SMALL,STRETCH,ADULT 

내가 이전의 두 답변에 대한 성능을 비교하지 않았습니다. 당신이 string 요소를 참조하면

+1

'python -m timeit -n 20000000 ' "노란색, 작은, 스트레치, 성인, T21fdsfdsfs".rpartition (",") [0]''은 루프 당 * 0.301 usec를 제공하고'python -m timeit -v -n 20000000 ' "노란색, 소형, 스트레치, 성인, T21fdsfdsfs".rsplit (",", 1) [0]''은 * 루프 당 * 0.489를 제공합니다 *. Core 2 Duo E6400에서 python-2.7-8.fc14.1.x86_64를 사용하고 있습니다. –

+0

깔끔함! 비슷한 결과가 나타납니다. 감사. – Johnsyweb

+1

완성을 위해,'python -m timeit -v -n 20000000 ' ",".join ("YELLOW, SMALL, STRETCH, ADULT, T21fdsfdsfs".split (",") [: 4]) ''결과 : 루프당 1.19 * usec. – Johnsyweb

0

, 당신은 9월를 사용하여 반환 1.

str.rsplit([sep[, maxsplit]])

에 문자열에서 단어의 목록을 maxsplit 설정, str.rsplit() 각각의 문자열을 분리 활용할 수 구분 기호 문자열. maxsplit이 주어지면, 대부분의 maxsplit split이 수행되고, 가장 오른쪽의 split이 수행됩니다. sep가 지정되지 않았거나 None 인 경우 공백 문자열은 구분 기호입니다. 오른쪽에서 분할을 제외하고 rsplit()은 split()처럼 동작합니다. 자세한 내용은 아래에서 설명합니다.

>>> lst = "YELLOW,SMALL,STRETCH,ADULT,T" 
>>> lst.rsplit(',',1)[0] 
'YELLOW,SMALL,STRETCH,ADULT' 
>>>