2017-06-02 10 views
-3

私はPython 3を使用しています。ユーザーが興味を持って欲しいと思っていて、それに続いて%という記号で答えてくれることを知っています。数字だけを受け入れ、 "%"のような余分な記号をユーザー入力として無視する構文は何ですか?

私の現在の構文は次のとおりです。

interest = input ('Enter the interest ') 

(?。raw_inputヘルプを使用していますそれも何とかうまくいきませんでした)

+0

regexはあなたが探しているものです – Filip

+1

は「12.111111111124149991 + 10%qwerty」を受け入れますか? – timgeb

+0

これは単なる割当スライスで、最終利益[-1]までのものです。あなたがより厳密な必要がある何かをしている場合は、分割+インデックスまたは正規表現を使用してください。 – Rosh

答えて

0

ユーザーが数字だけを入力することを確信している場合は、私が使用することをお勧めしますstr.replace()

これで%記号が削除されます:

interest = input ('Enter the interest ').replace('%','') 

In: 20% 
Out: 20 

そうしないと、Pythonのreモジュールで正規表現が必要になります。

この例では、数字以外の文字は無視され、数字のみが出力されます。

import re 
interest = input ('Enter the interest ').replace('%','') 
regex_match = re.findall(r'\d*',interest) 
out = ''.join(regex_match)``` 


In: 2a0ac% 
Out: 20 

内訳:

import reは - re(正規表現)モジュール

interest = input ('Enter the interest ').replace('%','')をインポート - 入力をつかみ、何も

regex_match = re.findall(r'\d*',interest)で%を置き換える - この意志の出力は、すべての一致した数字をリストとして返します。

r "はPythonには生の文字列であるため、解析されません。

\dは、1桁の数字[0-9] と一致し、*はそれ以上の結果が見つからなくなるまでパーサーに(\ d)前の式と一致するように指示します。

out = ''.join(regex_match) - これは、すべてのリスト項目を文字列に結合します。

+0

初心者として、私はまだRegExがどのようにここで助けているのか分かりませんが、まだまだありがとうございます。 –

+0

申し訳ありませんが、私の悪い。私は説明を追加します:) – SitiSchu

1

だけ%シンボルを解析する必要がある場合は、replaceを使用することができますこの関数は、そのよう:

interest = input('Enter the interest ').replace('%', '') 

これは、空とあなたの入力から任意の%の文字を置き換えます文字列(したがって、それを削除する)。

1

入力のみ10%になるだろうされている場合は、次の操作を行うことができるようになります:

interest = input("Enter interest: ") 
interest = interest[:-1] 

ユーザは、例えば10 %を入力した場合、あなたは常に行うことができます:

interest = input("Enter interest: ") 
interest.strip(' ') 
interest = interest[:-1] 
+0

ありがとう、本当に感謝します。 –

関連する問題