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

Python中无法将文本转换为DataFrame的问题求助

解决文本转Pandas DataFrame的问题

核心问题修正

你用print()赋值是错误的——print()仅负责输出内容,返回值永远是None,直接将原始文本以三重引号字符串形式赋值给变量即可,Python会保留文本中的换行和空行。

完整实现代码

import pandas as pd
import io

# 直接赋值原始文本,保留所有格式
raw_text = '''This is 
sample text

Name|age
--|--
1.abc|45
2.xyz|34'''

# 将字符串转为类文件对象,供read_csv读取
df = pd.read_csv(
    io.StringIO(raw_text),
    sep='|',
    skipinitialspace=True,
    header=3,  # 指定第4行(索引3)为表头
    skiprows=[4],  # 跳过表头下方的分隔线行(索引4)
    dtype={'age': int}  # 可选:指定age列的数据类型为整数
)

# 移除Name列中的数字前缀(如"1."、"2.")
df['Name'] = df['Name'].str.replace(r'^\d+\.', '', regex=True)

print(df)

关键步骤解释

  1. 三重引号字符串:用'''或"""包裹多行文本,能完整保留原始的换行、空行,无需额外处理换行。
  2. io.StringIO:Pandas的read_csv默认读取文件路径,StringIO可以把普通字符串模拟成可读取的文件对象,让read_csv直接处理内存中的文本。
  3. 参数设置:
    • header=3:跳过前3行无关内容(两行说明文本+空行),把第4行的Name|age作为表头。
    • skiprows=[4]:跳过表头下方的--|--分隔线行,避免它被识别为数据行。
    • skipinitialspace=True:自动去除单元格内容前后的空格(比如分隔符|两侧的空格)。

输出结果

Name  age
0  abc   45
1  xyz   34

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:04:54