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

如何用Python将文本文件转为指定结构列表并去除多余引号?

解决Python读取带引号逗号分隔文本为列表的问题

看起来你已经接近目标了,但问题出在读取内容的处理方式上——你的代码把整个文件内容当成了单个字符串元素塞进列表,自然会保留所有原始引号,也不会拆分句子。下面给你两种简单的解决办法:

方法1:手动拆分并清理引号

这种方法适合你想完全控制每一步处理的场景:

def read_data():
    new_list = []
    with open("text.txt", 'r', encoding='utf-8') as f:
        raw_data = f.read().strip()
        # 按", "分割成一个个带引号的句子
        quoted_sentences = raw_data.split(', ')
        # 去掉每个句子首尾的双引号
        new_list = [sentence.strip('"') for sentence in quoted_sentences]
    print(new_list)

read_data()

步骤说明:

  • f.read().strip() 读取文件内容并去掉首尾的空白字符
  • split(', ') 把整个字符串按", "拆分,得到一个个带双引号的句子字符串
  • 用列表推导式遍历每个句子,用strip('"')去掉首尾的双引号,得到干净的句子列表

方法2:用ast.literal_eval自动解析(推荐)

你的文件内容格式其实和Python列表的语法几乎一样,只是少了首尾的方括号。用ast.literal_eval可以安全地把字符串直接转换成真正的列表,省去手动处理引号的麻烦:

import ast

def read_data():
    new_list = []
    with open("text.txt", 'r', encoding='utf-8') as f:
        raw_data = f.read().strip()
        # 给内容加上方括号,变成合法的Python列表字符串
        list_str = f"[{raw_data}]"
        # 安全解析成Python列表
        new_list = ast.literal_eval(list_str)
    print(new_list)

read_data()

为什么推荐这个方法?

ast.literal_eval比普通的eval安全得多,它只会解析Python的字面量(比如列表、字符串、数字等),不会执行任何恶意代码。而且如果你的句子里有特殊字符(比如转义的引号),它也能正确处理,比手动拆分更可靠。

测试一下这两种方法,应该就能得到你想要的["Sentence 1.", "Sentence 2.",..., "Sentence n."]格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:27:10