2013-08-30 8 views
6

単語をポイントで区切った文字列があります。 例:私は(例えばこの場合、第3ワードが変化するので)、ワイルドカードのような1つの単語を割り当てる、Pythonの方法でこの文字列を使用するにはどうすればよいPython:ワイルドカード単語を取り除く

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

。私は正規表現を考えていますが、私がそれを念頭に置いているようなアプローチがPythonでも可能かどうかはわかりません。たとえば :

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

または

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

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

答えて

18

使用re.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' 
+0

ありがとうございます!あなたの "BTW"に:正しい方法で注文された "abcd"だけを取り除く可能性はありますか?これは正規表現の場合だけですか? – aldorado

+0

@aldorado、 '' abcddcbaabcd'.replace( 'abcd'、 ''、1) ' '1'は一度だけ置換することを意味します。 – falsetru

+2

@aldorado、 'str.replace'のサンプル使用法を示す別のコードを追加しました。 – falsetru

関連する問題