求助大佬,怎么样才能使字符串中的‘15’在迭代时扫描为‘15’而不是‘1’和‘5’(或者说怎么把‘1’和‘5’连在一起迭代)
当你说 ‘迭代’ 的时候, 你用的是什么环境,什么程序, 什么算法?
没有具体的字符串实例,只能说个大概的方法就是用一个长度为2的list或者str作为缓冲区,每次读进去两个字符。
代码如下:
def next_s(s):
v = []
s = iter(s)
while True:
try:
i = next(s)
if i>='0' and i<='9':
v.append(i)
else:
if len(v)>0:
r = ''.join(v)
v = []
yield r
yield i
except StopIteration:
break
if len(v)>0:
yield ''.join(v)
def main():
s = next_s("100hello15world32")
for i in s:
print(i)
if __name__ == '__main__':
main()
输出结果:
100
h
e
l
l
o
15
w
o
r
l
d
32
基本原理是:
其中 next/iter 函数参考:
这个要自己实现,迭代时,判断ascii码是不是数字,是的话如果有下一个值,那么判断下一个是不是数字,是的话拼接起来,然后重复判断下个值的操作,直到不是数字