16

ポイントで区切られた単語の文字列があります。例:

string1 = 'one.two.three.four.five.six.eight' 
string2 = 'one.two.hello.four.five.six.seven'

この文字列を Python メソッドで使用して、1 つの単語をワイルドカードとして割り当てるにはどうすればよいですか (この場合、たとえば 3 番目の単語が異なるため)。正規表現を考えているのですが、私の考えているようなアプローチがpythonで可能かどうかわかりません。例えば:

string1.lstrip("one.two.[wildcard].four.")

また

string2.lstrip("one.two.'/.*/'.four.")

(これを で抽出できることはわかっていますsplit('.')[-3:]が、一般的な方法を探しています。lstrip は単なる例です)

4

1 に答える 1

31

original_stringre.sub(pattern, '', original_string)から一致する部分を削除するために使用します。

>>> import re
>>> string1 = 'one.two.three.four.five.six.eight'
>>> string2 = 'one.two.hello.four.five.six.seven'
>>> re.sub(r'^one\.two\.\w+\.four', '', string1)
'.five.six.eight'
>>> re.sub(r'^one\.two\.\w+\.four', '', string2)
'.five.six.seven'

ところで、あなたは誤解していますstr.lstrip:

>>> 'abcddcbaabcd'.lstrip('abcd')
''

str.replaceの方が適切です (もちろん、re.subも):

>>> 'abcddcbaabcd'.replace('abcd', '')
'dcba'
>>> 'abcddcbaabcd'.replace('abcd', '', 1)
'dcbaabcd'
于 2013-08-30T13:14:07.833 に答える