将ansi文本格式以utf-8文本格式进行读取

简介: 查阅网上很多博客关于其他文本格式转化成utf-8,会出现中文乱码的情况,自己也遇到了,看到网上很多乱七八糟的博客,都没有什么实质性的解决方案。为此专门写了这篇博客,希望能对你们有帮助。

查阅网上很多博客关于其他文本格式转化成utf-8,会出现中文乱码的情况,自己也遇到了,看到网上很多乱七八糟的博客,都没有什么实质性的解决方案。为此专门写了这篇博客,希望能对你们有帮助。


导入模块


# -*- coding: utf-8 -*-
# @Time    : 2021/8/10 12:03
# @Author  : xiehou
# @File    : test.py
# @Software: PyCharm
import pandas as pd
from pandas import DataFrame
import os
from chardet import detect


对所有文本文件进行读取,并重写


def reformat_txt(txt_dir_path):
    txt_names = os.listdir(txt_dir_path)
    for txt_name in txt_names:
        with open(txt_dir_path + '/' + txt_name, 'rb') as file:
            content = file.read()
    # 获取文件的编码格式
        coding = detect(content)['encoding']
    # 以该文件的格式进行读取
        with open(txt_dir_path + '/' + txt_name, 'r', encoding=coding) as file:
            content = file.read()
    # 对之前读取的文件进行重写到result文件夹中,并以utf-8的格式进行写入
    # 方便在对其文件内容进行读取
        with open('./result/' + txt_name, 'w', encoding='utf-8') as f:
            f.write(content)


对重写文件以utf-8的格式进行读取


def read_txt(txt_dir_path):
    all_information = []
    txt_names = os.listdir(txt_dir_path)
    for txt_name in txt_names:
        with open(txt_dir_path + '/' + txt_name, 'r', encoding='utf-8') as file:
            content = file.readlines()
            all_information.append((content, txt_name))
    return all_information


将文本内容写入到csv文件中


def write_csv(all_information, tag, csv_path):
    tags = []
    titles = []
    contents = []
    for information in all_information:
        title = information[1]
        content = information[0]
        titles.append(title)
        contents.append(content)
        tags.append(tag)
    infor_dict = {
        "标题": titles,
        "内容": contents,
        "标签": tags
    }
    data = DataFrame(infor_dict)
    data.to_csv(csv_path)


主函数


if __name__ == '__main__':
    # 原始文件夹,该文件夹包含utf-8格式和ansi格式等各种文本格式,
    # 需要更改文件夹名称
    txt_dir_path = './file'
    reformat_txt(txt_dir_path)
    # 中间文件夹,不需要改动(需要自行新建该文件夹,要不然会报错)
    txt_dir_path = './result'
    all_information = read_txt(txt_dir_path)
    # 目标csv的标签
    tag = '涉恐事件2.0'
    csv_path = './' + tag + '.csv'
    write_csv(all_information, tag, csv_path)


完整代码


# -*- coding: utf-8 -*-
# @Time    : 2021/8/10 12:03
# @Author  : xiehou
# @File    : test.py
# @Software: PyCharm
import pandas as pd
from pandas import DataFrame
import os
from chardet import detect
def reformat_txt(txt_dir_path):
    txt_names = os.listdir(txt_dir_path)
    for txt_name in txt_names:
        with open(txt_dir_path + '/' + txt_name, 'rb') as file:
            content = file.read()
    # 获取文件的编码格式
        coding = detect(content)['encoding']
    # 以该文件的格式进行读取
        with open(txt_dir_path + '/' + txt_name, 'r', encoding=coding) as file:
            content = file.read()
    # 对之前读取的文件进行重写到result文件夹中,并以utf-8的格式进行写入
    # 方便在对其文件内容进行读取
        with open('./result/' + txt_name, 'w', encoding='utf-8') as f:
            f.write(content)
def read_txt(txt_dir_path):
    all_information = []
    txt_names = os.listdir(txt_dir_path)
    for txt_name in txt_names:
        with open(txt_dir_path + '/' + txt_name, 'r', encoding='utf-8') as file:
            content = file.readlines()
            all_information.append((content, txt_name))
    return all_information
    def write_csv(all_information, tag, csv_path):
    tags = []
    titles = []
    contents = []
    for information in all_information:
        title = information[1]
        content = information[0]
        titles.append(title)
        contents.append(content)
        tags.append(tag)
    infor_dict = {
        "标题": titles,
        "内容": contents,
        "标签": tags
    }
    data = DataFrame(infor_dict)
    data.to_csv(csv_path)
    if __name__ == '__main__':
    # 原始文件夹,该文件夹包含utf-8格式和ansi格式等各种文本格式,
    # 需要更改文件夹名称
    txt_dir_path = './file'
    reformat_txt(txt_dir_path)
    # 中间文件夹,不需要改动(需要自行新建该文件夹,要不然会报错)
    txt_dir_path = './result'
    all_information = read_txt(txt_dir_path)
    # 目标csv的标签
    tag = '涉恐事件2.0'
    csv_path = './' + tag + '.csv'
    write_csv(all_information, tag, csv_path)


如果有问题可以在评论区私信我,如果有帮助请帮忙点个赞👍

目录
相关文章
|
Oracle 关系型数据库 Java
解决读取Oracle数据库US7ASCII编码乱码问题
今天和第三方对接数据时,对方提供了一个视图US7ASCII编码,给代码调试带来了很大的不便。程序输出的mybatis获取的对象及new String(s.getBytes("ISO8859-1"), "GB2312")加解密后都是乱码。
1726 1
|
5月前
将文字或txt转换成GBK或者UTF8编码
将文字或txt转换成GBK或者UTF8编码
447 1
|
6月前
|
前端开发
文本格式
文本格式
47 2
|
存储 Java 关系型数据库
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
5904 4
|
存储 Windows
“浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别
“浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别
141 0
ANSI - Unicode - UTF8 转换
ANSI - Unicode - UTF8 转换
99 0
|
文件存储 Python
文本文件的编码格式
文本文件的编码格式
235 0
|
存储 编解码 Windows
理解字符编码
理解字符编码
理解字符编码
|
JavaScript C# Windows
C#保存文件为无BOM的utf8格式
如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM文件,甚是蛋疼。
2204 0