使用python搜索并替换文件中的Windows路径

时间:2014-03-27 05:52:09

标签: python regex replace path backslash

我在文件中有以下文字:

C:\ Program Files \ MyApp \

我想解析我的文件并将文本替换为:

d:\ NewDest \

我使用以下代码,但由于反斜杠,我无法替换文本 - 任何没有反斜杠的文本都能正常工作。我该怎么办?

import os, fnmatch
import fileinput, glob, string, sys, os
from os.path import join
import os
import re
import sys
def searchreplace(path,search,replace,exts=None):

    import fileinput, glob, string, sys, os
    from os.path import join
    # replace a string in multiple files
    #filesearch.py

    files = glob.glob(path + "/*")
    if files is not []:
        for file in files:
            if os.path.isfile(file):
                if exts is None or exts.count(os.path.splitext(file)[1]) is not 0:
                    print file
                    for line in fileinput.input(file):
                        line = re.sub(search,replace, line.rstrip())
                        print(line)

searchreplace('D:\Test', 'C:\Program Files\MyApp\', 'D:\NewDest\', '*.csproj')

3 个答案:

答案 0 :(得分:2)

您需要在路径中将\替换为\\ 还有正则表达式中每个\\\\的{​​{1}}。

\

参考:Can't escape the backslash with regex?

答案 1 :(得分:0)

一个反斜杠考虑转义序列。

>>> a ="\"
  File "<stdin>", line 1
    a ="\"
         ^
SyntaxError: EOL while scanning string literal
>>> a ="\\"

你可以使用双斜杠.Windows允许双斜杠(&#34; C:\ Program Files \ MyApp \&#34;,&#34; D:\ NuDist \&#34;)。

答案 2 :(得分:0)

尝试使用&#39; D:\\测试&#39;或者r&#39; D:\ Test&#39;而不是&#39; D:\ Test&#39;使反斜杠成为文字。所有字符串都相同。