2012-06-22 3 views
0

파이썬 2.6에서 일하고 있는데 "gpmetisfile.txt.part.4"를 가져 와서 숫자 4 만 반환하고 싶습니다. (일반적으로 나는 끝내기 만하면됩니다. 그러나 길이와 배열은 나중에 변경하고 나는 오히려 안전 할 것이고 문자열 자체에서 숫자를 순서대로 얻을 수 있습니다.)문자열에서 모든 문자를 제거하고 숫자 만 유지할 수 있습니까?

2009 년에 제 질문과 비슷한 질문이 있었지만 답변이 서로 상충되었습니다. 사전에

감사합니다.

+0

fmark의 [답변] (http://stackoverflow.com/questions/4289331/extract-numbers-of-a-string)을 참조하십시오. @ryan, – Ryan

+0

감사합니다. 미안, 내가 그걸 놓쳤다. – Ason

답변

3

다음 질문에 대한 대답은 무엇입니까 : 번호 이외의 모든 것을 제거합니다. 그게 네가 필요한거야?

In [1]: s = 'gpmetisfile.txt.part.4' 

In [2]: import re 

In [3]: re.sub('\D', '', s) 
Out[3]: '4' 

물어 이유는 예를 들어, 'gpmetisfile.txt.06_2012.part.4''0620124'이 될 것이다.

+0

이것은 내가 필요한 것입니다. 하나의 숫자 만 문자열에 표시됩니다. 즉, 내 파일은 "gpmetis.part.1205.txt"입니다. 확인해 주셔서 감사합니다. – Ason

3
>>> s = 'as!das42!fsd' 
>>> ''.join(filter(str.isdigit, s)) 
'42' 
+0

좋아요! 이것은 또한 작동합니다. 하나의 방법을 다른 방법보다 유용하게 사용할 수 있습니까? – Ason

+0

@AllysonKim,이 솔루션은 정규식보다 2 배 빠릅니다. 정규식은 복잡한 텍스트 처리에는 좋지만이 경우에는 과도합니다. IMHO – astynax

+0

감사합니다! 나는 두 답을 모두 선택할 수 있었으면 좋겠다. – Ason

관련 문제