2017-06-02 26 views
-3

我正在使用Python 3.我希望用户输入兴趣,我知道他们会用它后面的%符号来回答。什么是只接受数字并忽略任何额外标志(如“%”)作为用户输入的语法?

我目前的语法是:

interest = input ('Enter the interest ') 

(是否使用raw_input帮助它甚至不以某种方式工作?)

+0

正则表达式是你正在寻找的 – 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匹配一个数字[0-9] *表示只是告诉解析器匹配它之前的表达式(\ d),直到它找不到更多结果。

out = ''.join(regex_match) - 这将结合所有列表项到一个字符串。

+0

恩,作为一名初学者,我仍然不明白RegEx如何在这里帮助,还是非常感谢。 –

+0

对不起,我的坏。我会添加一个解释:) – SitiSchu

1

如果你只需要解析出%符号,你可以使用replace功能,像这样:

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

这将替换任何%字符从您的输入与空字符串(因此,删除它)。

1

如果输入的是要只10%,你将能够做到以下几点:如果用户输入10 %例如

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

,你总是可以做:

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

谢谢你,真的很感激。 –

相关问题