2017-01-02 19 views
-1

文字列があるとします:997 668、スペースの前に何かを削除する必要があります。つまり、出力として668が必要です。私は正規表現を使用して解決策が必要です。今、私は以下の使用しています:空白の前に空白文字をすべて削除します。

x = '997 668' 
x = x.split(' ')[1] 

は、上記にも出力を与えるが、x = 555は、出力は私がいけないその空白来れば、一つだけの数がある場合に失敗します。

+1

正規表現で解決策が必要なのはなぜですか?非常に頻繁に正規表現は適切ではないが、質問者はしばしばそれらの解決法を求めている。これは誰かが正規表現を使用するように強制している宿題の問題ですか? (ただ興味があります) –

+0

'x = x.split( '')x以外にx.split( '')[1]' –

答えて

4

より守備のビットは、単に[-1]と最後の項目を取得した場合は、独自のコードは動作します:

>>> '996 668'.split()[-1] 
'668' 
>>> '668'.split()[-1] 
'668' 
1

あなたが代わりに一つの項目の最初または2つのアイテムの第二を取得する

try: 
    x = '997 668' 
    x = x.split(' ')[1] 
except IndexError: 
    x = x[0] 
+0

例外ハンドラを使用すると何が問題になりますか? – e4c5

+0

これは役に立たなかった – Nitin

+0

それはコピーをコピーしてPythonシェルに貼り付けます。 – e4c5

1

あなたの入力は、その後、

235 989 877 

yと複数のスペースがある場合私たちの質問は多少あいまいです。なぜなら、最初のスペースの前のすべてを削除するのか、最後のスペースの前のすべてを削除するのかを言っていないからです。

TigerhawkT3の回答は、最後のスペースの前のすべてを削除します。

あなたが最初のスペースの前にすべてのものを削除したい場合は、あなたがsplitに2つ目のパラメータを必要としません、それはこの方法:

>>> '996 668'.split(' ', 1)[-1] 
'668' 
>>> '996'.split(' ', 1)[-1] 
'996' 
>>> '996 351 980 221'.split(' ', 1)[-1] 
'351 980 221' 

注意(ちなみに、素晴らしいです)TigerhawkT3の答えはあなたを与えること他の解釈の答え:

>>> '996 351 980 221'.split()[-1] 
'221' 

あなたが望むものによって異なります。

正規表現を使用しないでください。 :)

0

正規表現のソリューション:あなたは例外キャッチャーを使用せずにIndexErrorを避けることができるように

import re 
re.findall('\d+', x)[-1] 

re.findallは常にリストを返します。

関連する問題