를 제외한 모든 문자로 문자열을 분할합니다. 어떻게 출력을 얻을 수 있습니까?내가 코드를 공백
["h","e","l","l","o","h","o","w",....]
차이점은 공백/빈 항목이 없음을 의미합니다.
를 제외한 모든 문자로 문자열을 분할합니다. 어떻게 출력을 얻을 수 있습니까?내가 코드를 공백
["h","e","l","l","o","h","o","w",....]
차이점은 공백/빈 항목이 없음을 의미합니다.
사용 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
[s2의 문자는 '']이 아닌 경우 약 2 배입니다. –
@JustinPoehnelt이 대/소문자를 추가 할 때''char! = '''가되어야합니다. 왜냐하면'not ''는 항상'False'를 반환합니다;) – zhangxaochen
그냥리스트를 사용하고 replace, 어떤 대변도 필요 없습니다. 여기서 xp.
>>> list('hello how are you'.replace(' ', ''))
['h', 'e', 'l', 'l', 'o', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u']
[char for char in string if not char.isspace()]
또는 만 ASCII 공백 문자가 아닌 모든 공백을 걱정하는 경우,
list(string.replace(' ', ''))
또는 당신이 정말로 \w
일치하는 문자 만 유지하고 싶다면 :
re.findall(r'\w', string)
을
findall
버전은 문자, 숫자 및 밑줄 만 사용합니다. 그것이 당신이 원하는 것이라면, 계속 사용하십시오.
문자열을 함수 sam()에 전달하여 어떻게 사용할 수 있습니까? – NBA
@NBA :'sam'을 정의하여'string'이라는 이름의 인자를 취합니다. 어떻게해야할지 모르시는 경우 [Python tutorial] (http://docs.python.org/2/tutorial/controlflow.html#defining-functions)에서 질문에 대한 답을 얻어야합니다. – user2357112
이것을 달성하기 위해 -> re.split (r '(\ w)', str)을 사용할 수 있습니까? – NBA
'='대신'=='를 사용하고'if '조건 다음에':'를 잊지 마라. 다음에 여기에 코드를 입력하지 말고 복사/붙여 넣기를하십시오. – Christian
또한,'sam'은 실제로 인수를 취해야합니다. 알려진 코드에서 복사/붙여 넣기 대신이 코드를 질문 상자에 다시 입력 한 것처럼 보입니다. 앞으로는 복사/붙여 넣기를하십시오. 그것은 훨씬 더 신뢰할 수 있습니다. – user2357112
예! 고마워, 편집. – NBA