鍍金池/ 問答/Python  Linux  HTML/ python 正則替換問題

python 正則替換問題

問題描述

現(xiàn)有一段字符串style="font-family: 微軟雅黑; font-size: 6.67pt; vertical-align: super">1,2</span> ,想要將其中的1,2替換為[1,2],其中1,2只是一個(gè)例子可能有多個(gè)數(shù)字但是都是以,隔開。

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

匹配到1,2后也不知道該怎么后續(xù)處理,改變原字符串

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

現(xiàn)有一段字符串style="font-family: 微軟雅黑; font-size: 6.67pt; vertical-align: super">1,2</span> ,想要將其中的1,2替換為[1,2],其中1,2只是一個(gè)例子可能有多個(gè)數(shù)字但是都是以,隔開。求教,謝謝! 急求!

回答
編輯回答
舊城人

為何要用正則進(jìn)行匹配替換,如果是整個(gè)HTML文檔,那么你可以借用 beautifulsoup 進(jìn)行解析后,批量修改。

2018年5月25日 19:36
編輯回答
念舊

處理這種問題建議你靈活一點(diǎn).

replace能做嗎?
可以的.當(dāng)然有局限.我們?yōu)槭裁床恢苯訃L試將><改成>[]<?
replace('">','>['),這個(gè)替換左邊.
右邊replace('</span>',']</span>')
怪low的是不是.

正則表達(dá)式寫法:

a ="""<span style="font-family: 微軟雅黑; font-size: 6.67pt; vertical-align: super: ">1,2</span>"""

pattern = re.compile("(<span.*?>)(\d.*?)(</span>)")
pattern.search(a).groups()
# ('<span style="font-family: \xe5\xbe\xae\xe8\xbd\xaf\xe9\x9b\x85\xe9\xbb\x91; font-size: #6.67pt; vertical-align: super">',
# '1,2',
# '</span>')
re.sub(pattern,r"\1[\2]\3",a)
'<span style="font-family: \xe5\xbe\xae\xe8\xbd\xaf\xe9\x9b\x85\xe9\xbb\x91; font-size: 6.67pt; vertical-align: super">[1,2]</span>'
2017年9月17日 18:54