1

私は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、文字列を検索して置換しようとしました。しかし、私は望んでいた出力を得ることができませんでした。

4

3 に答える 3

1

このワンライナーで変換全体が行われます。

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

このコードのライブ デモを見る

于 2013-09-29T16:51:05.563 に答える
0

Ok。ボヘミアンとジェリーから答えを得ました。組み合わせたコードで動作するようになりました。

str = re.sub(r'(options) (\S+)', r'\2\n    \1', re.sub(r'([ \t =,])/', replace_text, text))
于 2013-09-30T01:15:04.860 に答える
0

これを試すことができます:

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

最後1は最初の一致のみを示すため、最初のパスのみが置換されます。

ところで、スペース/タブまたはコンマを節約したいと思いますよね? 次のように replace_text を作成します。

replace_text = r'\1/root/directory/'
于 2013-09-29T11:51:46.077 に答える