在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ 替換字符串操作并寫入新文件

替換字符串操作并寫入新文件

有 txt 文件內(nèi)容如下(類似):

正則表達(dá)式是一個(gè)特共23元殊的字符序列, 正則表達(dá)式是一個(gè)特共23元殊的字符序列, 正則表達(dá)式是一個(gè)特共34元殊的字符序列
 
正則表達(dá)式是一個(gè)特共11元殊的字符序列, 正則表達(dá)式是一個(gè)特共9元殊的字符序列, 正則表達(dá)式是一個(gè)特共91元殊的字符序列
 
正則表達(dá)式是一個(gè)特共89元殊的字符序列, 正則表達(dá)式是一個(gè)特共67元殊的字符序列, 正則表達(dá)式是一個(gè)特共84元殊的字符序列

段落之間會(huì)有換行,需要實(shí)現(xiàn)所有正文正則匹配 "共\d元", 對(duì)錢數(shù)執(zhí)行加 12 操作,然后重新寫入到新的文件中,現(xiàn)在卡到了替換這塊,有些段落正常有些錯(cuò)誤,望大神指點(diǎn)。

import re

with open('test.txt', 'r') as r, open('test_02.txt', 'w') as w:
    main = r.read()
    data = re.compile(r'[共]\d+[元]')
    _list = re.findall(data, main)
    print(_list)
    for i in _list:
        stre = re.compile(i)
        main = stre.sub('共' + str(int(re.search(r'\d', i)[0]) + 12) + '元', main)
    print(main)

如圖:

圖片描述

回答
編輯回答
墨染殤

自定義替換就好啦

import re


data = '''
    正則表達(dá)式是一個(gè)特共23元殊的字符序列, 正則表達(dá)式是一個(gè)特共23元殊的字符序列, 正則表達(dá)式是一個(gè)特共34元殊的字符序列

    正則表達(dá)式是一個(gè)特共11元殊的字符序列, 正則表達(dá)式是一個(gè)特共9元殊的字符序列, 正則表達(dá)式是一個(gè)特共91元殊的字符序列

    正則表達(dá)式是一個(gè)特共89元殊的字符序列, 正則表達(dá)式是一個(gè)特共67元殊的字符序列, 正則表達(dá)式是一個(gè)特共84元殊的字符序列
'''

def repl(m):
    coins = int(m.group(2)) + 12
    s = m.group(1) + str(coins) + m.group(3)
    return s

result = re.sub('(共)(\d+)(元)', repl, data)

print(result)

結(jié)果:


    正則表達(dá)式是一個(gè)特共35元殊的字符序列, 正則表達(dá)式是一個(gè)特共35元殊的字符序列, 正則表達(dá)式是一個(gè)特共46元殊的字符序列

    正則表達(dá)式是一個(gè)特共23元殊的字符序列, 正則表達(dá)式是一個(gè)特共21元殊的字符序列, 正則表達(dá)式是一個(gè)特共103元殊的字符序列

    正則表達(dá)式是一個(gè)特共101元殊的字符序列, 正則表達(dá)式是一個(gè)特共79元殊的字符序列, 正則表達(dá)式是一個(gè)特共96元殊的字符序列

2017年2月7日 14:42