Python - 从没有方括号的字符串中提取数字

时间:2018-05-15 13:01:41

标签: python

所以我目前正在开发人工智能,但我需要帮助才能获得年龄。所以如果有人输入"我14岁"我希望它采取14并设置它有一个变量。我已经这样做但是,方括号围绕输出,我不想要,所以我正在寻找一种方法,从没有方括号的字符串中获取数字。 这是我的代码

#Gets users age
elif "i am" in inp and "years old" in inp:
  age=[int(s) for s in inp.split() if s.isdigit()]
  age=str(age)
  print(age)

感谢任何帮助

3 个答案:

答案 0 :(得分:1)

使用正则表达式:

import re
m = re.search("\d+", "I am 14 years old")
if m:
    print(int(m.group()))

<强>输出:

14

答案 1 :(得分:0)

只是做

age=[s for s in inp.split() if s.isdigit()]
int(''.join([str(s) for s in age]))

答案 2 :(得分:0)

<强> 1。使用您的方法:

只需使用较少的&#34; compact&#34;语法:

#!/usr/bin/python

inp="i am 15 years old"

#Gets users age
if "i am" in inp and "years old" in inp:
    for s in inp.split():
      if s.isdigit():
        age=int(s)
    print(age)

运行此代码给出:

$ python pouet.py 
15

<强> 2。使用正则表达式

正则表达式更适合这样的任务。 下面的代码解析了用户的年龄,即使他已经过了1年(没有&#39; s&#39;),或者如果他缩短了#34;我是&#34;到了&#34;我&#34;:

#!/usr/bin/python

import re

test_v=[ "i am 15 years old", "i'm 1 year old"]

#Gets users age
for test_string in test_v:
    res = re.match('(i am|i\'m) (\d+) year[s]? old', test_string)
    if (res):
        print res.group(2)

运行此代码给出:

$ python pouet.py 
15
1