Python脚本提取TXT中t.co链接无结果,请求技术帮助
问题排查与修正:提取Twitter点赞推文中的t.co图片链接
原脚本的核心错误点
- 文件内容读取错误:
word = str(FileObject)只是将文件对象转为字符串,并未读取文件内的实际文本,正确做法是使用FileObject.read()获取文件内容。 - 正则表达式不匹配目标内容:你的源文件中链接格式是
https://t(dot)co/xxx,但原脚本匹配的是https://t.co,完全无法命中目标链接。 - 列表判断语法错误:
if link(None)是非法语法,判断列表是否为空应该用if not link。 - 文件写入逻辑错误:
- 直接将列表
link与字符串拼接link + "\n"会触发类型错误,列表不能直接和字符串相加; FileObject2.close("list.txt")是错误用法,close()方法不需要传入文件名参数;- 循环内反复打开/关闭文件会导致数据覆盖或写入不完整。
- 直接将列表
- 循环逻辑冗余低效:用
while True + try-except的方式逐个匹配链接,不如直接用re.findall()一次性提取所有符合条件的链接更简洁高效。
修正后的Python脚本
import re # 读取源文件内容 with open("like.txt", "r", encoding="utf-8") as f: content = f.read() # 匹配所有格式为https://t(dot)co/xxx的链接 # 正则解释:匹配https://t(dot)co/开头,后面跟着任意字母数字的完整链接 pattern = r"https://t\(dot\)co/[a-zA-Z0-9]+" links = re.findall(pattern, content) # 写入结果到list.txt with open("list.txt", "w", encoding="utf-8") as f: if not links: print("No Image URLs Found") f.write("") # 写入空文件或根据需求调整 else: # 每个链接占一行 f.write("\n".join(links)) print(f"成功提取{len(links)}个链接")
代码说明
- 使用
with语句处理文件,无需手动关闭文件,更安全可靠; - 正则表达式
r"https://t\(dot\)co/[a-zA-Z0-9]+"精准匹配你源文件中的链接格式; re.findall()一次性提取所有符合条件的链接,存入列表links;- 写入文件时用
"\n".join(links)将列表转为每行一个链接的字符串,避免类型错误; - 增加了提取结果的数量提示,方便确认执行情况。
内容的提问来源于stack exchange,提问作者KniteRite
相关产品推荐
相关产品推荐

