7

次のようなもので re.sub うまくいくテキストリストがありますre.sub('0000', '1111',data)

シェル内の 1 つの入力に対する置換パターンも正常に機能し^(.{4})(.{4})(.{3})(.{3})ます。\1\4\2\3ただし、リストでこのパターンを使用しようとすると、最初の行で望ましくない結果が得られ、後者を置き換えることはありません。ここで何が欠けていますか?

"0000-22N-06W-01"
"0000-22N-06W-02"
"0000-22N-06W-03"
"0000-22N-06W-04"

import re
o = open("output.txt","w")
data = open("input.txt").read()
o.write(re.sub(r'^(.{4})(.{4})(.{3})(.{3})', r'\1\4\2\3',data))
o.close()
4

3 に答える 3

0

これ ?:

import re

t = """0000-22N-06W-01
0000-22N-06W-02\t\t
0000-22N-06W-03   \t\t\t\t
0000-22N-06W-04"""
print t,'\n'

print re.sub(r'^(.{4})(.{4})(.{4})([^ \t\r\n]+)',
             r'\1\4\2\3',
             t,
             flags= re.M)

生産する

0000-22N-06W-01
0000-22N-06W-02     
0000-22N-06W-03                 
0000-22N-06W-04 

0000-01-22N-06W
0000-02-22N-06W     
0000-03-22N-06W                 
0000-04-22N-06W

昔々、 re.Mre.subflags=の署名がre.sub(pattern, repl, string, count=0, flags=0)

于 2013-09-21T18:45:23.003 に答える