【问题标题】:How to increment last number in file python如何增加文件python中的最后一个数字
【发布时间】:2019-06-24 10:51:39
【问题描述】:

我在文件中有以下文本

firefox-x 46.0:
google 5.1.0.1:
    - request
    - branch

我需要提取第一行的最后一个字母并增加一个版本并附加到同一个文件中。我的附加部分将是

    firefox-x 46.1:
    google 5.1.0.1:
    - request
    - branch

能够提取最后一个整数,但如何更新和写入同一个文件。

import re
with open('branch.txt','r') as fh:
 first_line = fh.readline()
 #print (first_line)
 last_number = re.findall(".*(?:\D|^)(\d+)", first_line)
 for i in last_number:
    to_int = int(i)
 #print (to_int)
 next_num = (to_int +1)
 print (next_num)

【问题讨论】:

    标签: python regex file writefile


    【解决方案1】:

    你可以使用

    import re
    rx = r'\d+(?=:$)'
    s="""firefox-x 46.0:
    google 5.1.0.1:
        - request
        - branch"""
    
    print(re.sub(rx, lambda x: str(int(x.group(0)) + 1), s, 1, re.M))
    

    输出:

    firefox-x 46.1:
    google 5.1.0.1:
        - request
        - branch
    

    Python demo

    带有re.M 标志的\d+(?=:$) 正则表达式将匹配 结尾处的:1 作为计数re.sub 的 /em> 参数只会执行一次替换。

    lambda x: str(int(x.group(0)) + 1) 部分将采用第一个匹配项,将匹配的 1+ 位转换为 int,将 1 添加到值并将其转换回字符串。

    读取和写入另一个文件:

    import re
    
    rx = r'\d+(?=:$)'
    with open('branch.txt', 'r') as fr:
        data = fr.read()
        with open('branch.out.txt', 'w') as fw:
            fw.write(re.sub(rx , lambda x: str(int(x.group(0)) + 1), data, 1, re.M))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 2019-06-19
      • 1970-01-01
      • 2020-12-23
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多