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

Python新手求助:如何获取完整ID并正确统计符合条件的行

问题分析与解决

核心问题1:ID提取错误

你用line[0]只能取到行首第一个字符,但ID是1-1000的连续数字(可能是1位、2位或3位),必须提取行首所有连续的数字字符再转成整数才行。

核心问题2:代码笔误

keywords定义里有个低级错误:"247.224.231.109"x多了个x,直接删掉就能解决语法报错。

关于重复统计的疑问

原代码里any(kw in line for kw in keywords)只要行内存在任意一个关键词就会执行一次累加,同一行只会触发一次,不会重复统计,这点不用纠结。


解决方案1:用正则表达式提取ID(推荐)

正则能快速精准匹配行首的连续数字,适合处理这种固定格式的ID:

import re

# 修正笔误,去掉多余的x
keywords = ("ckneale8@weibo.com", "247.224.231.109", "Newborn", "205.36.91.89", "Madelin", "askeelqc@clickbank.net")

varTotal = 0

with open("if-file.txt", "r") as file:
    for line in file:
        # 匹配行首的连续数字,返回匹配到的字符串,没匹配到返回None
        id_match = re.match(r'^\d+', line.strip())
        if id_match:
            line_id = int(id_match.group())
            # 检查行内是否包含任意关键词
            if any(kw in line for kw in keywords):
                varTotal += line_id

print(varTotal)

解决方案2:手动遍历字符提取ID(适合新手理解)

如果不想用正则,可以手动遍历行的每个字符,收集数字直到遇到非数字:

keywords = ("ckneale8@weibo.com", "247.224.231.109", "Newborn", "205.36.91.89", "Madelin", "askeelqc@clickbank.net")

varTotal = 0

with open("if-file.txt", "r") as file:
    for line in file:
        id_str = ""
        # 遍历行的每个字符,收集开头的数字
        for char in line:
            if char.isdigit():
                id_str += char
            else:
                break  # 遇到非数字就停止,因为ID在最开头
        # 确保id_str不为空再转整数
        if id_str:
            line_id = int(id_str)
            if any(kw in line for kw in keywords):
                varTotal += line_id

print(varTotal)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:36:14