我正在寻找在字符串中添加数字,因为python通过字符串读取。
所以,如果我有一个字符串a = "253+"
然后我会有一个空字符串b。
那么,我如何让python读取2,将其添加到字符串b,然后读取5并将其添加到字符串b,然后添加5并将其添加到字符串b,当它遇到不是但是整数,它会停止功能。
然后字符串b将是b = "253"
迭代中是否有一个特定的调用要求整数,然后将i添加到另一个字符串?
TL;博士
我想使用迭代将数字从一个字符串添加到另一个字符串,当它到达非整数时停止。
字符串b将是一个空字符串,字符串a将是a="253+"
完成通话后,strng b将等于b="253"
我知道这听起来像是一个家庭作业问题,但事实并非如此。如果您需要澄清任何其他内容,我会很高兴。
答案 0 :(得分:3)
这是从字符串中提取数字的简单方法:
In [13]: a="253+"
In [14]: ''.join(c for c in a if c.isdigit())
Out[14]: '253'
答案 1 :(得分:2)
问题有点不清楚,但这是你正在寻找的吗?
a = "123+"
b=""
for c in a:
try:
int(c)
b = b + c
except ValueError:
print 'This is not an int ' + c
break
运行此结果会导致此b
为123
并打破+
字符。对于你来说,这听起来像是try..except ValueError
位的部分。并非我不必在ValueError
发生时打破循环,我可以继续循环遍历字符串中的其余字符并忽略那些无法解析为int的字符
答案 2 :(得分:1)
试试这个:
a = "i889i" #Initial value of A
b = "" #Empty string to store result into
for each in a: #iterate through all characters of a
if each.isdigit(): #check if the current character is a digit
b += each #append to b if the current character is a digit
else: #if current character is NOT a digit
break #break out of for loop
print b #print out result
希望这有帮助!
答案 3 :(得分:1)
使用for循环,这相对容易。如果我们使用我们的ASCII知识,我们知道数字的ASCII值范围从48(表示0作为字符串)到57(表示9作为字符串)。
我们可以使用内置方法ord(x)
找到字符的ASCII值,其中x
是字符(即ord('4')
等于52
,整数)。
现在我们掌握了这些知识,将其添加到for循环中会很容易。我们简单地创建一个从0到字符串长度减去1的for循环。在for循环中,我们将使用我们所在的迭代作为索引,在字符串中找到该索引处的字符,最后检查其ord
值是否落在我们想要的范围内。
这看起来像这样:
def method(just_a_variable):
b = ''
for i in range(0, len(a)):
if (#something):
if (#something):
b = b+a[i]
return b
您可以填写"#somethings"
吗?
答案 4 :(得分:1)
In [201]: import itertools as IT
In [202]: a = "253+9"
In [203]: ''.join(IT.takewhile(str.isdigit, a))
Out[203]: '253'
IT.takewhile将停在a
中不是数字的第一个字符处。
另一种方法是使用正则表达式模式。您可以使用模式r'\D'
:
In [208]: import re
In [209]: re.split(r'\D', a, maxsplit=1)[0]
Out[209]: '253'
答案 5 :(得分:1)
您可以使用正则表达式编写生成器并逐个生成它们:
>>> import re
>>> s='123+456abc789'
>>> nums=(m.group(1) for m in re.finditer(r'(\d+)', s))
>>> next(nums)
'123'
>>> next(nums)
'456'
>>> next(nums)
'789'