从Python调用的grep搜索字符串中的斜杠

2024-04-20 06:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下输入文件“testFile.txt”:

$ 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

好的,到目前为止还不错,但是我想用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字符串中有什么东西被转义了吗?怎么回事


Tags: txtstringnotgrepinfilecommandalsopopen
1条回答
网友
1楼 · 发布于 2024-04-20 06:57:47

将函数调用更改为mNx = grep1('testFile.txt', '"// mNx"')

问题是,我们需要命令是Python字符串文本'grep "// mNx" testFile.txt'

只有在\时才需要转义/在Python中可以按原样表示

相关问题 更多 >