怎么样才能使字符串中的‘15’在迭代时扫描为‘15’而不是‘1’和‘5’?

求助大佬,怎么样才能使字符串中的‘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

 

基本原理是:

  • 需要在使用 python 的 next 函数遍历字符串的过程中,自己累积整数字符再当作一个组返回。
  • 在这个例子的基础上,你可以实现任意你想要的 `token` 遍历需求。

 

其中 next/iter 函数参考:

这个要自己实现,迭代时,判断ascii码是不是数字,是的话如果有下一个值,那么判断下一个是不是数字,是的话拼接起来,然后重复判断下个值的操作,直到不是数字