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

Python新手求教:如何将多句字符串转为每行对应一句的DataFrame?

解决字符串转句子行DataFrame的问题

嘿,我懂你现在的困扰啦!你用pd.read_csv加分隔符.的思路其实方向没错,但问题可不少:这种方式会把所有点都当成分隔符——比如句子里如果有Mr.或者etc.这种缩写,直接就把完整内容拆碎了;而且分割后还会出现多余的空字符串或者带空格的内容,完全达不到你要的每行一个完整句子的效果。

给你两个实用的解决方案,从基础到进阶,适合新手上手:

基础版:用正则准确分割句子

正则表达式能精准识别句子的结尾(通常是. ! ?,后面跟着空格或者文本结束),不会误拆缩写里的点。代码如下:

import pandas as pd
import re

# 你的原始文本
data = 'This is a book, to which I found exciting. I bought it for my cousin. He likes it.'

# 核心:用正则分割句子,匹配「.!?结尾 + 空格/文本结束」的位置
sentences = re.split(r'(?<=[.!?])\s+', data.strip())

# 过滤掉可能的空字符串(比如文本最后有多余标点时会产生)
sentences = [sentence for sentence in sentences if sentence]

# 转换成DataFrame,指定列名
data_df = pd.DataFrame(sentences, columns=['Sentences'])

# 查看结果
print(data_df)

运行后你会得到完美的每行一个句子的DataFrame,完全符合你的需求!

进阶版:处理更复杂的句子场景

如果你的文本里有引号内的句子、省略号或者特殊缩写,稍微调整正则就能适配,比如:

# 适配带引号、省略号的句子分割
sentences = re.split(r'(?<=[.!?])\s+(?=(?:[^"]*"[^"]*")*[^"]*$)', data.strip())

这个正则会跳过引号内的标点,避免把引号里的句子误分割。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:17:42