元のファイルの形式は次のとおりです。K:またはM:で始まる2つのヘッダー行。 任意の長さ(ただしK:またはM:ヘッダーで始まらない)の不定数の(ASCII)テキスト行:
K:cccc ...
M:cccc ...
CCCC ..
CCC ..
..
...
K:CCCC ...
M:CCCC ...
CCCC ..
CCC ..
..
...
M:CCCC ...
K:CCCC ...
CCCC ..
CCC。 。
...
...
などPython regexを使用して行の始まりに依存する改行を置換する方法
Cは任意のASCII文字であるので、任意のライン上のcccc...
のようなものが考えられます。
&/DM%hdma76H?」,,, 3DD」
@は最後のファイルでのM/K-ためのスイッチを確認します。
K:CCCC ...
M:CCCC ...
CCCC ..
CCC ...
私は何をする必要があることはそうのように、元のファイルとの間に余分な\ nの中に置くことです。 。
...
K:CCCC ...
M:CCCC ...
CCCC ..
CCC ..
..
..
など
これは明らかに簡単な作業ですが、私はregexでやりたいと思います。その理由は、この作業は多くのものの1つです 私はこのファイルを行い、他のすべての場合正規表現は問題なく使用されます。好奇心のちょうどちょうど!
これは私が成功せず、Pythonでしようとしたものです:
re.sub('(?<!^[KM]:)(.+)(\n)(?=^[KM]:)','\g<1>\n\n',file,flags=re.MULTILINE)
考え方は単純です:またはM:あなたはKで始まらない行を取得するとKで始まる行が続きます。またはM:余分な\ nを入れます。それを行うには 私は複数行で実行する必要があります。代わりに、\ nがヘッダ行の間にも挿入されます。
あなたの時間と助けに感謝します。
"KかMを使用するのではなく、 ':'"(?=^[KM] :)私は "K"を使うでしょう。 :またはM: " "not"と同じこと。 – Wli
're(r '\ n(?:[KM]:。* \ n?){2})'、r '\ n \ n \ 1'、ファイル) ' –