python向后判断第一个有相同序号的行
大家讲道理
大家讲道理 2017-04-17 17:42:16
[Python讨论组]

有个文本文件如下:
1 123 aaa
2 124 bbb
3 125 ccc flag
4 126 ddd
3 127 eee
3 128 fff

我要找到有着flag标志的这一行, 然后继续往下读,找到与flag这一行有着相同序号的那一行,然后记录下这之间的id。按这个例子来说,就是
有flag的一行为3 125 ccc
然后向下读,只找到第一个序号为3的,也就是3 127 eee这一行,然后就记录下ccc跟eee之间的所有id:125 126(包括ccc)
请问该如何做?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
高洛峰
def get_nos(key):
    start_id = None
    nos = []
    with open('a.txt', 'r') as file:
        for line in file.readlines():
            line_list = line.split(' ')
            id = line_list[0]
            no = line_list[1]

            if line.find(key) > 0:
                start_id = id
                nos.append(no)
                continue
            if start_id and id != start_id:
                nos.append(no)
    return nos

print get_nos('flag')
PHPz
import re

with open('file.txt', 'r') as file:
    flag_num = 0
    list_id = []
    for line in file.readlines():
        if 'flag' in line:
            flag_num = re.search('(\d+)\s+.*', line).group(1)
            list_id.append(re.search('\d+\s+(\d+)\s+.*', line).group(1))
            continue
        if not flag_num:
            continue
        list_id.append(re.search('\d+\s+(\d+)\s+.*', line).group(1))
        target = re.search('{0}\s+.*'.format(flag_num), line)
        if target:
            print list_id[:-1]
            break

输出结果:

['125', '126']
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号