Python에서 grep -v와 동일한 것은 무엇입니까?

Python에서 grep -v와 동일한 것은 무엇입니까?

좋아요 grep -v. 나는 항상 그것을 사용합니다. 하지만 저는 Python으로 일부 텍스트 처리도 수행하고 있는데 중요한 한 가지를 놓치고 있습니다.

grep -v보통 나는 텍스트에서 관련 없는 내용을 잘라내는 습관을 들이고 있습니다 .

예를 들어,

$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)

$ grep '[a-z]' > linesiwanted

하지만 Python에서 정규식의 보수를 어떻게 일치시키나요? 예를 들어, \w?의 보수입니다.

답변1

Python의 정규식은 searchor 메소드에 관계없이 or 객체 match를 반환합니다 . 이에 상응 하는 경우 다음을 사용할 수 있습니다.MatchNonegrep -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])

답변2

[^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

관련 정보