2013-08-11 2 views
-2

문자열이 "How are you"입니다. 이 문자열은 "How-are-you"이되어야합니다. 정규식을 사용하는 것이 가능합니까? 방법?공백을 하이픈으로 바꾸기

>>> import re 
>>> s = "How are you" 
>>> print re.sub('\s', '-', s) 
How-are-you 
+4

는 당신이 공간을 대체 간단한보고 시도 가지고있다 '-'. – aweis

+2

''두 칸 '''이되기를 원합니까? ''2 공백 ''또는''2 공백''? ''space와 \ ttab "는 어떨까요? ''space-and-tab ''또는''space-and \ ttab''와 같이? – DSM

답변

2

당신은 정규식을 사용하여 질문으로?

x = "How are you" 
print "-".join(x.split()) 

--output:-- 
How-are-you 
3

왜 정규식을 사용

3

그냥 방법 대신 내장 비단뱀을 사용

# To replace *the* space character only 
>>> re.sub(' ', '-', "How are you"); 

# To replace any "blank" character (space, tab, ...): 
>>> re.sub('\s', '-', "How are you"); 

# To replace any sequence of 1 or more "blank" character (space, tab, ...) by one hyphen: 
>>> re.sub('\s+', '-', "How  are    you"); 

# To replace any sequence of 1 or more "space" by one hyphen: 
>>> re.sub(' +', '-', "How  are    you"); 

참고 : 당신의 정확한 필요에 따라

strs = "How are you" 
new_str = strs.replace(" ","-") 
print new_str // "How-are-you" 
2

을, 그 테마에 많은 변화 사용하여 정규 표현식이있다 "단순한"대체를 위해서는 replace이 정규 표현식을 사용하는 것보다 더 적합 할 것입니다 (이들은 입니다. 강력하지만 처리하기 전에 컴파일 단계가 필요하므로 비용이 많이 듭니다. 비록 이것이 간단한 경우에 당신의 프로그램에 정말로 영향을 미칠지 확신하지는 못했지만 ...;). 마지막으로 하나 특별한 경우 나 공백의 시퀀스를 교체하기위한, 아무 것도 아마 x.join(str.split()) ...

5

을 이길 수있는 또 다른 옵션은 replace

$ python -m timeit 'a="How are you"; a.replace(" ", "-")' 
1000000 loops, best of 3: 0.335 usec per loop 
$ python -m timeit 'a="How are you"; "-".join(a.split())' 
1000000 loops, best of 3: 0.589 usec per loop 
+0

그래도 대답은 13 분만에 Bryan에게 2 분이 남았습니다. split()은 replace()보다 몇 가지 장점이 있습니다. 단어 사이에 하나 이상의 공간 또는 탭이있을 수 있습니다. – 7stud

관련 문제