Python如何拆分txt每行中前置句子与行尾的数值内容
Python实现每行句子与末尾数值拆分方案
核心逻辑:由于待提取的数值固定在每行最末尾,仅和前面句子内容以空格分隔,直接使用字符串右分割方法即可避开句子内部包含数字、点号、空格的干扰,不需要编写复杂正则。
具体实现步骤
- 逐行读取目标txt文件,自动跳过空行避免运行报错
- 对每行有效内容,从最右侧的第一个空格位置做一次拆分,直接得到完整句子、末尾数值两部分
- 按需将数值转换为int/float类型,结果可存入列表后续处理,也可直接导出为两列格式的表格文件
代码示例
# 初始化列表存储拆分结果 split_result = [] # 替换为你的txt文件实际路径 txt_path = "your_data_file.txt" with open(txt_path, "r", encoding="utf-8") as f: for raw_line in f: # 清除每行首尾的换行符、多余空白 line = raw_line.strip() if not line: continue # 从最右侧按空格拆分,仅拆分1次 sentence, num_part = line.rsplit(" ", 1) # 数值格式转换,根据你的数据类型选int或float即可 try: number = int(num_part) # 若数值含小数替换为 number = float(num_part) except ValueError: print(f"格式异常跳过该行:{line}") continue split_result.append([sentence, number]) # 打印验证结果 for s, n in split_result: print(f"提取句子:{s} | 提取数值:{n}") # 若需要导出为两列csv,取消注释下面代码即可 # import pandas as pd # pd.DataFrame(split_result, columns=["句子内容", "对应数值"]).to_csv("result.csv", index=False, encoding="utf-8-sig")
注意事项
不推荐使用从左匹配空格、正则提取数字的写法:如果句子内部本身包含空格、数字(例如
I bought 3 cups of coffee in 2024, taste is so so. -2),这类写法很容易把句子内部的数字误识别为目标值。rsplit(" ", 1)是针对当前场景最简洁、容错率最高的实现方式,完全适配你给出的行格式规则。
内容的提问来源于stack exchange,提问作者NicodemoXIII
相关产品推荐
相关产品推荐

