首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将编码文本转换为正文(不使用编码创建的特殊字符)

如何将编码文本转换为正文(不使用编码创建的特殊字符)
EN

Stack Overflow用户
提问于 2021-06-30 19:05:41
回答 1查看 102关注 0票数 1

我将从一系列PDF文件中提取文本来进行主题建模。从PdF文件中提取文本后,我将把每个PDF文件的文本保存到一个.txt文件或.doc文件中。为此,我遇到了一个错误,即我应该添加.encode('utf-8')来将提取的文本保存到.txt文件中。所以,我添加了txt = str(txt.encode('utf-8'))。问题是读取.txt文件,当我读取.txt文件时,由于UTF-8,它们有特殊字符,我不知道如何才能没有这些字符的正文。我申请了解码,但它不起作用。

我应用了另一种方法来避免保存为.txt格式,我打算将提取的文本保存在数据框中,但我发现最初的几个页面都保存在数据框中!

如果你能分享你的解决方案,从.txt文件中读取和删除与编码('utf-8')相关的字符,以及如何将提取的文本保存在数据框中,我将不胜感激。

代码语言:javascript
复制
import pdfplumber
import pandas as pd
import  codecs

txt = ''

with pdfplumber.open(r'C:\Users\thmag\3rdPaperLDA\A1.pdf') as pdf:
    pages = pdf.pages
    for i, pg in enumerate (pages):
            txt += pages [i].extract_text()
        
print (txt)

data = {'text': [txt]}
df = pd.DataFrame(data)


####write in .txt file
text_file = open("Test.txt", "wt")
txt = str(txt.encode('utf-8'))
n = text_file.write(txt)
text_file.close()

####read from .txt file
with codecs.open('Test.txt', 'r', 'utf-8') as f:
    for line in f:
        print (line)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-30 19:18:17

您写入的文件不正确。不是对文本进行编码,而是在打开文件时声明一种编码,然后编写不带编码的文本- Python将自动对其进行编码。

它应该是

代码语言:javascript
复制
####write in .txt file
with open("Test.txt", "wt", encoding='utf-8') as text_file:
    n = text_file.write(txt)

除非您使用的是Python2,否则您不需要使用编解码器来打开编码文件,同样,您可以在open函数中声明编码:

代码语言:javascript
复制
with open("Test.txt", "rt", encoding='utf-8') as f:
    for line in f:
        print(line)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68193584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档