代码之家  ›  专栏  ›  技术社区  ›  feedMe

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

  •  1
  • feedMe  · 技术社区  · 7 年前

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

    $ cat testFile.txt
    111     // mNx
    222     // mNy not nMx
    333     // mNz also not nMx
    

    $ 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字符串中是否有转义?怎么回事?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Nishant Florentin    7 年前

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

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

    \ . / 可以用Python表示。