2014-02-23 1 views
0

를 제외한 모든 문자로 문자열을 분할합니다. 어떻게 출력을 얻을 수 있습니까?내가 코드를 공백

["h","e","l","l","o","h","o","w",....] 

차이점은 공백/빈 항목이 없음을 의미합니다.

+0

'='대신'=='를 사용하고'if '조건 다음에':'를 잊지 마라. 다음에 여기에 코드를 입력하지 말고 복사/붙여 넣기를하십시오. – Christian

+0

또한,'sam'은 실제로 인수를 취해야합니다. 알려진 코드에서 복사/붙여 넣기 대신이 코드를 질문 상자에 다시 입력 한 것처럼 보입니다. 앞으로는 복사/붙여 넣기를하십시오. 그것은 훨씬 더 신뢰할 수 있습니다. – user2357112

+0

예! 고마워, 편집. – NBA

답변

1

사용 str.replace :

In [805]: list(s.replace(' ', '')) 
Out[805]: ['h', 'e', 'l', 'l', 'o', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u'] 

또는 str.translate :

In [808]: list(s.translate(None, ' ')) 
Out[808]: ['h', 'e', 'l', 'l', 'o', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u'] 

그들은 긴 문자열을 다루는 (@ user2357112가 언급 한 바와 같이) 지능형리스트보다 더 빨리 배 :

In [827]: s2='hello how are you'*10000 

In [828]: timeit [char for char in s2 if not char.isspace()] 
100 loops, best of 3: 19.5 ms per loop 

In [889]: timeit [char for char in s2 if char != ' '] 
100 loops, best of 3: 14 ms per loop 

In [829]: timeit list(s2.replace(' ', '')) 
100 loops, best of 3: 3.4 ms per loop 

In [830]: timeit list(s2.translate(None, ' ')) 
100 loops, best of 3: 2.87 ms per loop 
+0

[s2의 문자는 '']이 아닌 경우 약 2 배입니다. –

+0

@JustinPoehnelt이 대/소문자를 추가 할 때''char! = '''가되어야합니다. 왜냐하면'not ''는 항상'False'를 반환합니다;) – zhangxaochen

1

그냥리스트를 사용하고 replace, 어떤 대변도 필요 없습니다. 여기서 xp.

>>> list('hello how are you'.replace(' ', '')) 
['h', 'e', 'l', 'l', 'o', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u'] 
4
[char for char in string if not char.isspace()] 

또는 만 ASCII 공백 문자가 아닌 모든 공백을 걱정하는 경우,

list(string.replace(' ', '')) 

또는 당신이 정말로 \w 일치하는 문자 만 유지하고 싶다면 :

re.findall(r'\w', string) 

findall 버전은 문자, 숫자 및 밑줄 만 사용합니다. 그것이 당신이 원하는 것이라면, 계속 사용하십시오.

+0

문자열을 함수 sam()에 전달하여 어떻게 사용할 수 있습니까? – NBA

+0

@NBA :'sam'을 정의하여'string'이라는 이름의 인자를 취합니다. 어떻게해야할지 모르시는 경우 [Python tutorial] (http://docs.python.org/2/tutorial/controlflow.html#defining-functions)에서 질문에 대한 답을 얻어야합니다. – user2357112

+0

이것을 달성하기 위해 -> re.split (r '(\ w)', str)을 사용할 수 있습니까? – NBA