斜线在grep的搜索字符串在Python
问题描述:
叫我有以下的输入文件“TESTFILE.TXT”:斜线在grep的搜索字符串在Python
$ cat testFile.txt
111 // mNx
222 // mNy not nMx
333 // mNz also not nMx
我想MNX的值,但其他一些线路的含有约MNX意见。 Unix命令行中使用grep找到正确的路线:
$ grep mNx testFile.txt
111 // mNx
222 // mNy not mNx
333 // mNz also not mNx
然而,
$ grep "// mNx" testFile.txt
111 // mNx
OK,到目前为止好,但我想用Python调用grep的。从this post继我有
from subprocess import Popen, PIPE
def grep1(inFile, string):
COMMAND = 'grep %s %s' % (string, inFile)
process = Popen(COMMAND, shell=True, stderr=PIPE, stdout=PIPE)
output, errors = process.communicate()
return output
mNx = grep1('testFile.txt', 'mNx')
print mNx
这给现在
111 // mNx
222 // mNy not mNx
333 // mNz also not mNx
如果我改用
mNx = grep1('testFile.txt', '// mNx')
它返回下列信息:
testFile.txt:111 // mNx
testFile.txt:222 // mNy not mNx
testFile.txt:333 // mNz also not mNx
我已经试过"\/\/ mNx"
,r"// mNx"
,r"\/\/ mNx"
等,但无法重现原生grep
行为。在我的Python字符串中有什么东西被转义了?到底是怎么回事?
答
将函数调用更改为mNx = grep1('testFile.txt', '"// mNx"')
。
的事情是,我们所需要的命令被这个Python的字符串文字'grep "// mNx" testFile.txt'
你需要逃避,只有当它是\
。 /
可以用Python表示。
@印度感谢您的建议,但这是行不通的。 – feedMe
你需要什么确切的价值,你需要的数字或整个匹配线? – Inian
我将最终拆分字符串,但这个问题只是要求正确的线:) – feedMe