5

ユーザーがアドレスを送信し、ユーザー入力をキーに置き換える必要がある状況があります。サフィックスなしのアドレスを使用してこれに参加できます。

幌馬車道

チザムトレイル

レイクトレイル

栗ST

リンカーンストリート

に:

幌付きワゴン

チザム

くるみ

リンカーン

ただし、このコードを記述して最後の単語のみを置き換える方法がわかりません。私は得る:

リンカーン

くるみ

チザム

レイクエール

チショルメール

幌付きワゴン

regex verbose、re.sub、および $ を試しました。

import re
target = '''

LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL

'''
rdict = {
' ST': '',
' STREET': '',
' TR': '',
' TRL': '',
}
robj = re.compile('|'.join(rdict.keys()))
re.sub(' TRL', '',target.rsplit(' ', 1)[0]), target
result = robj.sub(lambda m: rdict[m.group(0)], target)
print result
4

2 に答える 2

6

とともに使用re.sub$ます。

target = '''
LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL
'''

import re
print re.sub('\s+(STREET|ST|TRAIL|TRL|TR)\s*$', '', target, flags=re.M)
于 2013-08-07T01:32:35.780 に答える
2

文字列を次の形式で保存する場合:

target = '''

LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL

'''

正規表現を使用する必要はありません:

>>> print '\n'.join([x.rsplit(None, 1)[0] for x in target.strip().split('\n')])
LINCOLN
CHESTNUT
CHISHOLM
LAKE
CHISHOLM
COVERED WAGON
于 2013-08-07T01:42:50.497 に答える