You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决不同编码DataFrame合并后出现异常符号¶的问题?

解决合并不同编码DataFrame后出现的异常符号问题

首先,咱们得搞清楚这个¶符号是怎么来的:它是ISO-8859-1编码里的段落分隔符(对应ASCII码182),问题出在你用同一种编码(ISO-8859-1)读取了两种不同编码的文件——原本是UTF-8的文件被强制用ISO-8859-1解析,导致UTF-8的多字节字符被错误拆分成单字节,最终出现了这个异常符号。

下面是针对性的解决方案,按优先级排序:

1. 区分文件编码分别读取(最优方案)

既然你明确知道哪些文件是UTF-8、哪些是ASCII/ISO-8859-1,那就分开读取再合并,从根源避免编码强制转换的问题:

# 假设你把两类文件分别存在两个列表里
utf8_file_list = ["utf8_comment1.csv", "utf8_comment2.csv"]
ascii_file_list = ["ascii_comment1.csv", "ascii_comment2.csv"]

# 读取UTF-8编码的文件
df_utf8 = pd.concat([pd.read_csv(f, sep=';', header=None, encoding='utf-8') for f in utf8_file_list])
# 读取ASCII/ISO-8859-1编码的文件
df_ascii = pd.concat([pd.read_csv(f, sep=';', header=None, encoding='ISO-8859-1') for f in ascii_file_list])

# 合并两个DataFrame
merge1 = pd.concat([df_utf8, df_ascii], ignore_index=True)

2. 自动检测文件编码(适合不清楚编码的场景)

如果不知道哪些文件对应哪种编码,可以用chardet库自动检测编码,然后针对性读取:

先安装chardet(如果没装的话):

pip install chardet

然后用下面的代码:

import chardet
import pandas as pd

def get_file_encoding(file_path):
    with open(file_path, 'rb') as f:
        # 读取文件前10000字节做检测,足够判断编码类型
        raw_data = f.read(10000)
        result = chardet.detect(raw_data)
    return result['encoding']

# 遍历所有待合并的文件
dfs = []
for comment_csv in your_file_list:  # 替换成你的文件列表变量名
    enc = get_file_encoding(comment_csv)
    # 处理编码别名,比如chardet可能返回'Windows-1252'(和ISO-8859-1兼容)
    if enc and enc.lower() in ['utf-8', 'utf-8-sig']:
        df = pd.read_csv(comment_csv, sep=';', header=None, encoding='utf-8')
    else:
        df = pd.read_csv(comment_csv, sep=';', header=None, encoding='ISO-8859-1')
    dfs.append(df)

merge1 = pd.concat(dfs, ignore_index=True)

3. 修复已出现的异常符号(应急方案)

如果已经合并完才发现问题,可以直接替换掉¶符号——根据实际需求,要么删掉,要么替换成原本的换行符(因为这个符号通常对应UTF-8里的换行或分段标记):

# 替换所有列中的¶为空字符串
merge1 = merge1.replace('¶', '', regex=True)

# 如果原本是换行,就替换成\n
# merge1 = merge1.replace('¶', '\n', regex=True)

内容的提问来源于stack exchange,提问作者hii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:29:10