0

コンテンツが次のタイプの .txt ファイルがあります。

DIRN straight-2
FOR minutes-5
DO crossing-6
WHAT Hall-7-13
DO take-10
WHAT Hall-3-15

私が欲しいのは、これを最終的なコンテンツとして持つPythonの助けを借りて生成できる別の.txtファイルです:

DIRN straight
FOR minutes
DO crossing
WHAT Hall-7
DO take
WHAT Hall-3

つまり、ハイフンを含む各行の最後のハイフン「-」の後に来るものをすべて削除したいのです。

Pythonコードを手伝ってください。事前に助けてくれてありがとう。

4

1 に答える 1

7

Python 2 または 3 では、これは機能します。

s='''DIRN straight-2
FOR minutes-5
DO crossing-6
WHAT Hall-7-13
DO take-10
WHAT Hall-3-15'''

import re

for line in s.splitlines():
    line=re.sub(r'^(.*)-\d+$',r'\1',line)
    print line

この方法で Python で非正規表現を実行できます。

for line in s.splitlines():
    line=line.rpartition('-')[0] if '-' in line else line
    print(line)

または -- おそらくさらに良いでしょう:

for line in s.splitlines():
    line=line[:line.rindex("-")] if '-' in line else line    
    print line

-\d+正規表現は、文字列の末尾でのみ一致するため、より具体的です。

いずれの場合も、次のように出力されます。

DIRN straight
FOR minutes
DO crossing
WHAT Hall-7
DO take
WHAT Hall-3
于 2013-03-18T22:18:34.913 に答える