Text-Processing
grep -v 的 python 等價物是什麼?
我喜歡
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
?
Python 中的正則表達式,無論是
search
ormatch
方法,都返回一個對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])
事實證明你可以使用
$$ ^a-z $$意思是
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