我在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