在我的一个表格中,我发送了两位信息:
<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”。
我有什么想法可以解决这个问题吗?
答案 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)