grep -v와 같은 파이썬은 무엇입니까? 또한 파이썬에서

나는 좋아한다 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?



답변

파이썬의 정규 표현식 인 searchor 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


답변