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

如何配置pandas.read_csv将"视为普通字符而非引号字符以读取大型TXT文件

嘿,这个问题我刚好碰到过!说白了就是pandas默认的引号解析机制在搞鬼——它会把双引号包裹的内容当成一个完整字段,哪怕里面有分隔符。要解决这个问题,关键就是完全禁用引号解析,或者让pandas把双引号当成普通字符处理。

给你两种可行的方案:

方案一:禁用引号解析(需导入csv模块)

我们可以用csv.QUOTE_NONE参数告诉pandas别处理任何引号,这样双引号就会被当作普通字符对待。如果你的文件是用空白(空格、制表符)分隔单词的,还得设置正则分隔符和python引擎(c引擎不支持正则分隔符):

import pandas as pd
import csv

# 读取文件,禁用引号解析,按任意空白分割单词
df = pd.read_csv(
    filepath,
    header=None,
    delimiter=r'\s+',  # 匹配任意数量的空白字符(空格、制表符等)
    engine='python',   # 必须用python引擎才能支持正则分隔符
    quoting=csv.QUOTE_NONE  # 完全禁用引号解析逻辑
)

# 把所有列的单词堆叠成每行一个的DataFrame
final_df = df.stack().reset_index(drop=True).to_frame(name='word')

方案二:指定一个不存在的引号字符(无需导入csv)

如果不想额外导入csv模块,可以把quotechar设成一个文件里绝对不会出现的字符(比如空字符\x00),这样pandas找不到要解析的引号,自然就把双引号当成普通字符了:

import pandas as pd

df = pd.read_csv(
    filepath,
    header=None,
    delimiter=r'\s+',
    engine='python',
    quotechar='\x00'  # 用一个不存在的字符当引号标记,等于禁用引号解析
)

final_df = df.stack().reset_index(drop=True).to_frame(name='word')

如果是要每个字符单独占一行

要是你的需求是把每个字符(包括双引号)都单独放在一行,那可以换个思路,先读取整个文件内容再拆分:

# 先读取文件所有内容为字符串
with open(filepath, 'r', encoding='utf-8') as f:
    content = f.read()

# 把每个字符拆分成单独一行
char_df = pd.Series(list(content)).to_frame(name='character')

这样就能完美解决双引号被误解析的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:39:06