使用正则表达式处理Python文本

时间:2013-09-29 11:34:19

标签: python regex

我使用python 2.7.5。 我在目录/子目录中有一些文件。 file1的样本如下所示

Title file name
    path1 /path/to/file
    options path2=/path/to/file1,/path/to/file2,/path/to/file3,/path/to/file4 some_vale1 some_vale2 some_value3=abcdefg some_value4=/path/to/value some_value5

我想在文本文件中插入文本/root/directory。我希望得到的最终结果如下: -

Title file name
    path1 /root/directory/path/tofile
    path2=/root/directory/path/to/file1,/root/directory/path/to/file2,/root/directory/path/to/file3,/root/directory/path/to/file4
    options some_vale1 some_vale2 some_value3=abcdefg some_value4=/path/to/value some_value5 

所有文件中的名称path, options and path2都相同。目录/子目录中的文件需要使用与上面相同的结果进行修改。我尝试使用re.sub来查找和替换字符串。但是我从来没有得到我想要的输出。

3 个答案:

答案 0 :(得分:1)

这个单行完成整个转型:

str = re.sub(r'(options) (\S+)', r'\2\n    \1', str.replace('/path/', '/root/directory/path/')

查看此代码的live demo

答案 1 :(得分:0)

你可以试试这个:

result = re.sub(r'([ \t =,])/', replace_text, text, 1)

最后一个1仅表示第一个匹配,因此只替换第一个路径。

顺便说一句,我认为您想要保留空格/制表符或逗号吧?像这样生成replace_text:

replace_text = r'\1/root/directory/'

答案 2 :(得分:0)

确定。得到了Bohemian和Jerry的答案。得到它使用组合代码。

str = re.sub(r'(options) (\S+)', r'\2\n    \1', re.sub(r'([ \t =,])/', replace_text, text))