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

Python读取txt返回列表元素带单引号 写入时无该引号如何解决

问题原因

你看到的单引号分两种情况,先做个简单测试就能定位:
执行代码print(repr(list[0]))查看读取到的第一个元素的原始表示:

  • 如果输出没有额外包裹的单引号:说明你打印列表时看到的单引号是Python展示列表字符串元素的默认格式,不是内容本身,不需要去除,对比失败和这个无关
  • 如果输出确实自带首尾单引号:说明你写入文件的时候逻辑错误,把非字符串类型的元素直接转成了字符串写入,单引号是str()转换时自带的内容

修复方案

1. 修正写入逻辑

你当前的写入方法直接调用str(each),如果current_videos的元素是存储标题和链接的元组,str()会自动给元组内的字符串元素加上单引号写入文件。修改为按你约定的「标题%链接」格式手动拼接写入:

def filewriter(filename, filetowrite):
    # 统一指定utf-8编码避免乱码
    with open(filename, "w", encoding="utf-8") as file:
        for title, url in filetowrite:
            # 按分隔符拼接成纯字符串,避免str()转换引入多余符号
            file.write(f"{title}%{url}\n")

2. 修正读取逻辑

读取时按照分隔符拆分,还原成和current_videos完全一致的元组格式,保证对比时类型匹配:

def filereader(filename):
    old_videos = []
    with open(filename, "r", encoding="utf-8") as file:
        for line in file:
            line = line.strip()
            # 跳过空行
            if not line:
                continue
            # 只分割1次,避免标题内包含%导致拆分错误
            title, url = line.split("%", 1)
            old_videos.append( (title, url) )
    return old_videos

3. 列表对比示例

两个列表的元素格式完全统一后,直接用集合差集就能快速找出新增内容:

# 新旧列表都转成集合,直接求差集得到新增视频
old_set = set(filereader("videos.txt"))
current_set = set(current_videos)
new_videos = current_set - old_set

# 新增视频推送逻辑写在这里

# 最后把最新的current_videos写入文件覆盖旧内容
filewriter("videos.txt", current_videos)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:06:06