You need to enable JavaScript to run this app. Python PRAW脚本修改split逻辑后触发'list'无format的AttributeError
优惠活动
大模型
产品
解决方案
定价
更多

Python PRAW脚本修改split逻辑后触发'list'无format的AttributeError

问题根因
  • 这次改动后出问题,本质是两个藏在代码里很久的隐患,被这次的分割逻辑调整触发了,和splitlines()本身没有关系:
    • 你写的两处[elem.lower() for elem in checkkw]、[elem.lower() for elem in topics_dict['body']]是完全无效的代码。列表推导是返回新列表的表达式,必须把返回值赋值回原变量,否则临时生成的内容执行完就会被内存回收,等于转小写的操作根本没落地。之前用split()能连跑30次没出问题,纯粹是当时测试的关键词本来就是全小写,刚好没碰到大小写不匹配的情况。
    • split()和splitlines()的切分规则差异很大。原来的split()默认会按所有空白字符(空格、换行、制表符、连续多空格)切分,还会自动过滤切出来的空字符串;但splitlines()只会严格按照换行符的边界切分,如果你的checkkw配置项是用空格分隔的多个关键词(不是换行分隔),切完得到的就是一整段长文本,根本没拆成独立的关键词列表,自然没法正确匹配帖子内容。
    • splitlines()切出来的行自带首尾多余空格,不会像split()那样自动清理,也会导致匹配结果不准。
修正后的代码片段

把对应逻辑块替换成下面的写法即可解决问题:

if keyword['keyword'] == 'testing something':
    checkkw = keyword['checkkw']
    # 先按行切分,再逐行按空格拆成独立关键词,自动过滤空行、空字符串
    checkkw = [word.strip() for line in checkkw.splitlines() for word in line.split()]
    total = len(checkkw)
else:
    checkkw = keyword['checkkw']
    checkkw = checkkw.split()
    total = len(checkkw)

# 真正将关键词转成小写,同步清理首尾空白
checkkw = [elem.lower() for elem in checkkw]
# 将拼接后的帖子正文转成全小写,和关键词的大小写保持一致
full_post_body = " ".join(topics_dict["body"]).lower()

print(total)
print(checkkw)

exists = 0
# 使用处理好的小写文本做匹配,不会因为大小写不一致漏判
if all(clean_kw in full_post_body for clean_kw in checkkw):
    print('posting')
    link = topics_dict['url'][0]
    print(link)
    result = self.dblinks.get(Query()['link'] == link)
    if result is not None:
        print('already posted to this link')
    else:
        try:
            reply_template = keyword['comment']
            reply_text = reply_template.format(topics_dict["url"])
            submission.reply(reply_text)
            self.dblinks.insert({'link': link})
            time.sleep(1)
        except Forbidden:
            print('Error')
额外避坑提示
  • 不要用无赋值的列表推导做数据修改操作,这是Python开发里非常容易踩的新手坑,临时生成的新列表没有被引用的话,会立刻被内存回收,完全起不到修改原数据的作用。
  • 上面的嵌套拆分类写可以同时兼容换行、空格两种关键词分隔格式,不需要纠结选split()还是splitlines(),适配性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 02:24:03