나는 좋아한다 grep -v
. 나는 항상 그것을 사용합니다. 그러나 나는 또한 파이썬에서 텍스트 처리를하고 있으며, 한 가지 중요한 점이 부족합니다.
일반적 grep -v
으로 텍스트에서 불필요한 것을 제거하는 데 사용 합니다.
예를 들어
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
그러나 파이썬에서 정규 표현식의 보완과 어떻게 일치합니까? 예를 들어 \w
?
답변
파이썬의 정규 표현식 인 search
or match
메소드는 Match
객체 또는를 반환합니다 None
. 들어 grep -v
상응하는, 당신은 사용할 수 있습니다 :
import re
for line in sys.stdin:
if re.search(r'[a-z]', line) is None:
sys.stdout.write(line)
더 간결하게 :
import re; sys.stdout.writelines([line for line in sys.stdin if re.search(r'[a-z]', line) is None])
답변
[^ az]를 사용하여 의미 할 수 있습니다 grep -v [a-z]
.
나는 그것을 다음과 같이 사용하고있다 :
#!/usr/bin/env python
# coding=UTF-8
import sys, re
for file in sys.argv[1:]:
f = open(file)
string = f.read()
regex = re.compile('[^a-z]')
subs = regex.sub('', string)
f.close()
print subs