读取python中任意位数的字符串中的数字

时间:2014-03-18 00:38:06

标签: python

我在解析字符串时遇到了麻烦。这是我的代码:

name='report 11 hits'
print(name[7:9])
print(name[11:])

输出:

11
hits

但是,如果我需要输入字符串

name='report 112 hits'
print(name[7:9])
print(name[10:])

输出:

11
 hits

这意味着,每当我输入的数字超过三位数时,程序就无法正常读取。我想知道是否有人可以写我如何修改我的代码,无论我写什么数字,程序都会正确读取它。感谢。

5 个答案:

答案 0 :(得分:2)

您可以使用split()然后打印生成列表的第二个元素:

name='report 112 hits'
namelist = name.split()
print(namelist[0])
# report
print(namelist[1])
# 112
print(namelist[2])
# hits

答案 1 :(得分:1)

name='report 112 hits'
import re
print re.search(r'\d+', name).group()
# 112

但如果您确定该数字将是字符串中的第二个元素,以空格分隔,那么您可以

print name.split(None, 2)[1]
# 112

这种分割效率很高,因为我们将最大分割限制为2。

答案 2 :(得分:1)

假设总是有空格:

_, count, hits = name.split(" ")
print(count)
print(hits)

答案 3 :(得分:1)

如果您保证字符串始终是' report ### hits'其中###是一些数字,你可以这样做:

name = 'report 11155342 hits'
print name.split()[1]
print name.split()[2]

答案 4 :(得分:0)

import re

name='report 11155342 hits'

print(re.findall(r'\d+', name)[0])

打印:

11155342