pythonif语句如何循环播放_python – 循环播放文本,一次3个字符

我在PDF中有这个文字:

“约翰是一个喜欢煎饼的法国人,他也喜欢踢足球”

我想一次三个遍历PDF文本中的字符.我尝试了以下,但我得到的错误只能将str(不是“int”)连接到str.我理解这个错误意味着什么,但不知道如何在代码中解决这个问题.

pdf_text = pdf_file.getPage(1).extractText()

for c in pdf_text:

print(pdf_text[c:c+3])

我期待得到一个结果,例如:

Joh

ohn

hn

etc...

任何建议,解释,将不胜感激.如果您需要更多信息,请与我们联系.谢谢.

编辑:我能够利用@slider的评论来解决这个问题.

出于教育目的:

for c in range(len(text) - 3):

print(text[c:c+3])

解决方法:

您提供的代码是对您的问题的误解.你有一个文本是str,“John是法国人……”,你说(换句话说):

for char in text: print(text[char:char+3])

在这里你可以清楚地看到什么是错的 – char不是一个有效的索引,因为它本身就是一个str(第一次迭代中的“J”).相反,你想从文本中获取索引,并且因为文本中的字符与索引一样多,所以range(len(text))可以解决问题.

你说你想跳过每3个字符.好吧,range()接受一个步骤参数(见docs),所以如果你提供任何步骤,它将跳过参数指示的索引量:

[i for i in range(0, 10, 3)]

>>> [0, 3, 6, 9]

现在,您只需要考虑在向具有固定元素集的列表的索引中添加数字时所假设的错误,如文本[i:i 3] …

steps = [i for i in range(0, len(text)-3, 3)]

for step in steps:

print(text[step:step+3])

(注意,明确说范围(0,n)与范围(n)相同)

编辑:

你说你需要文本重叠,所以不需要跳过字符,你只需要遍历文本的每个索引,再次,考虑不存在的最后一个索引:

steps = [i for i in range(len(text)-3)]

for step in steps:

print(text[step:step+3])

这是一样的

for char_index in range(len(text)-3):

print(text[char_index:char_index+3])

标签:python,python-3-x

来源: https://codeday.me/bug/20190701/1345809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值