如何从python(django)中的字符串中隔离数字?

时间:2014-06-28 19:58:30

标签: python regex django python-2.7 django-views

在我的一个表格中,我发送了两位信息:

  <input type ="hidden" name= "items" value="{{item.pk}} {{item.name}}">

当我通过request.POST.get获取信息时,我得到“202 book”。

如何从字符串或单词中单独分隔数字?我做了一个分手:

  pks = request.POST.getlist("items")
  for pk in pks:
      pk.split(' ',1)

但是这个数字并不总是1或2位数字,它可能是2或3等。另外我可能会遇到名称为book1的情况,所以我需要保留最后的“1”。

我有什么想法可以解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

除非我误解你的问题,为什么不拆分字符串并从结果列表中提取第一个和第二个元素?演示:

>>> mystr = "202 book"
>>> lst = "202 book".split()
>>> num = lst[0] # or int(lst[0])
>>> num
'202'
>>> other = lst[1]
>>> other
'book'

如果您的字符串包含可能包含数字的数字和单词,但在查找数字时不应计算,您可以这样做:

>>> mystr = 'This 101 5is 4 600a 42 de3mo string12'
>>> re.findall(r'\b\d+\b', mystr)
['101', '4', '42']
>>> re.findall(r'(?!\d+\b)\w+', mystr)
['This', '5is', '600a', 'de3mo', 'string12']

答案 1 :(得分:1)

  

你可以肯定地使用它吧!

my_digit = ''.join(temp for temp in my_string if temp.isdigit())

或者如果您想拥有数字值,可以使用int(my_digit)

答案 2 :(得分:1)

关于如何分割数据,你有一些有用的答案,但由于你似乎同时控制了模板和视图,为什么要将它们放在同一个字段中呢?为什么不把它们放在两个不同的领域?

<input type="hidden" name="item_pk" value="{{item.pk}}">
<input type="hidden" name="item_name" value="{{item.name}}">

答案 3 :(得分:0)

我从未使用过django,但是如何使用正则表达式?

import re

pk = "202 book";
print re.findall(r'\d\d?\d?',pk)