【问题标题】:Print the last occurrence of a word in a TXT in Python在 Python 中打印 TXT 中最后一次出现的单词
【发布时间】:2019-08-28 14:25:18
【问题描述】:

我正在从 .txt 文件中提取数据,并且我想获取整个文件中某个单词的最后一次出现。在这种情况下,我得到了三个单词 D / DÑATfno 但我只想要每个单词的最后一个并打印它。

def extract(in_filename):
    if not os.path.exists(in_filename):
        print("ERROR: Input file does not exist ❌ ")
        sys.exit()

    with open(in_filename, 'r') as file:
        rows = file.readlines()
        for row in rows:
            if re.match('D/DÑA', row):
                row_parse = row.strip()          

                print(row_parse)
            elif re.match('Tfno', row):
                row_parse = row.strip()          

                print(row_parse)


extract('apd29.txt')

输出是:

D/DÑA: PRUEBA PRUEBITA
Tfno: 666666666
D/DÑA: PRUEBA PRUEBITA
Tfno: 666666666
D/DÑA: PRUEBA PRUEBITA <-- I need this
Tfno: 666666666 <-- I need this

我期望输出:

D/DÑA: PRUEBA PRUEBITA
Tfno: 666666666

【问题讨论】:

    标签: python-3.x data-extraction


    【解决方案1】:

    使用reversed

    例如:

    def extract(in_filename):
        if not os.path.exists(in_filename):
            print("ERROR: Input file does not exist ❌ ")
            sys.exit()
    
        with open(in_filename, 'r') as file:
            rows = file.readlines()
            for row in reversed(rows):      #!Update
                if re.match(r'D/DÑA', row):
                    row_parse = row.strip()          
    
                    print(row_parse)
                    break
    
    
    extract('apd29.txt')
    

    【讨论】:

    • 是的,这是工作,谢谢!但就我而言,如果我想用相同的程序搜索多个单词,例如“D / DÑA”、“Tfno”和“F.N”,“break”不起作用。使用 if...elif..elif,使用 'break' 只打印三个的最后一个单词,在这种情况下,只打印最后一个 'Tfno'
    • 优雅! :D 干得好。
    • @ozzrocker95。您需要更改逻辑,然后将 break 替换为在每次查找后删除搜索词...
    【解决方案2】:

    在这种情况下,在 for 循环之外分配一个变量会起作用。

    result = "not found"    
    with open(in_filename, 'r') as file:
        rows = file.readlines()
        for row in rows:
            if re.match('D/DÑA', row):
                row_strip = row.strip()
                row_parse = row_strip.rfind('D/DÑA')
    
                result = row_parse
    
    print(result)
    

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      相关资源
      最近更新 更多