我有一些像这样的XML文本:
'Location of Template and Country
Cntryloc = """" & Sheet1.Range("B5") & """"
Debug.Print Cntryloc
TempLoc = "" & Sheet1.Range("B11") & ""
Finaltemplloc = Sheet1.Range("B17")
i=2
'Getting the name of excel Sheet
CntryExcel = Sheet1.Range("C5")
TempLoc = "" & Sheet1.Range("B11") & ""
Workbooks.Open TempLoc & "\" & "Bank" & ".xlsx", True, False
Workbooks("" & FName & ".xlsx").Activate
ActiveWorkbook.Unprotect Password:="Tall.Trees"
Worksheets("Template").Unprotect Password:="Tall.Trees"
Worksheets("Template").Range("D14").Formula = "='&"["&CntryExcel&"]Dump"&"'"&"!"&"$A$" & i""
ActiveWorkbook.BreakLink Name:=Cntryloc, Type:=xlExcelLinks
Worksheets("Template").Protect Password:="Tall.Trees"
ActiveWorkbook.Protect Password:="Tall.Trees"
'Location for Final Output
ActiveWorkbook.SaveAs Filename:=Finaltemplloc & "\" & Bank.xlsx
ActiveWorkbook.Close
我希望text = '<sp> <speaker>T<seg rend="small">ARSIS</seg>. </speaker> <p>—Adelante, Señora. Gracias á la luz rosada, franquearemos sin tropezones este ingrato sendero.</p> </sp> <sp> <speaker>L<seg rend="small">A</seg> M<seg rend="small">ADRE</seg>. </speaker> <p>—La llovizna nos coge ahora de cara… Yo no la temo. Tengo mi rostro bien curtido para estas inclemencias que hacen á mis hijos duros, y tan insensibles al frío como al calor. Tú también te has endurecido, según veo, y te has dejado en los aires sutiles y en los ardores del sol tu antigua carita de galancete afeminado.</p>'
中的所有内容都变为小写,例如:
<seg rend="small">
我在Python中尝试过类似的不同变体:
<sp> <speaker>T<seg rend="small">arsis</seg>. </speaker> <p>—Adelante, Señora. Gracias á la luz rosada, franquearemos sin tropezones este ingrato sendero.</p> </sp> <sp> <speaker>L<seg rend="small">a</seg> M<seg rend="small">adre</seg>. </speaker> <p>—La llovizna nos coge ahora de cara… Yo no la temo. Tengo mi rostro bien curtido para estas inclemencias que hacen á mis hijos duros, y tan insensibles al frío como al calor. Tú también te has endurecido, según veo, y te has dejado en los aires sutiles y en los ardores del sol tu antigua carita de galancete afeminado.</p> </sp> <sp> <speaker>T<seg rend="small">arsis</seg>. </speaker> <p>—En los días ásperos de la Aldehuela empecé á soltar mi máscara de cera, y cambié los goznes quebradizos de mi máquina corporal por otros de acero.</p> </sp> <sp> <speaker>L<seg rend="small">a</seg> M<seg rend="small">adre</seg>. </speaker> <p>—Al nombrar la Aldehuela traes á mi memoria algo que tenía que decirte, y es cosa en verdad lamentable. ¿Sabes que ha muerto el pobre José Caminero?</p> </sp>
但它不起作用,我得到像 for f in re.findall(r'<seg rend="small">([^<]*?)</seg>', text):
text = text.replace(f, f.lower())
这样奇怪的结果,不明白为什么。可以请任何人帮助我吗?提前谢谢!
答案 0 :(得分:1)
首先,不要使用正则表达式解析HTML。话虽如此,您可以使用 lxml
:
from lxml import html
text = '<sp> <speaker>T<seg rend="small">ARSIS</seg>. </speaker> <p>—Adelante, Señora. Gracias á la luz rosada, franquearemos sin tropezones este ingrato sendero.</p> </sp> <sp> <speaker>L<seg rend="small">A</seg> M<seg rend="small">ADRE</seg>. </speaker> <p>—La llovizna nos coge ahora de cara… Yo no la temo. Tengo mi rostro bien curtido para estas inclemencias que hacen á mis hijos duros, y tan insensibles al frío como al calor. Tú también te has endurecido, según veo, y te has dejado en los aires sutiles y en los ardores del sol tu antigua carita de galancete afeminado.</p>'
tree = html.fromstring(text)
results = [x.lower() for x in tree.xpath('//seg[@rend="small"]/text()')]
print results
<强>输出:强>
['arsis', 'a', 'adre']
答案 1 :(得分:1)
您可以使用正则表达式。
>>> txt = 'foo <seg rend="small">ARSIS</seg> bar'
>>> import re
>>> re.sub(r'(<seg\s+rend\s*=\s*"small">)(.*?)(?=</seg>)', lambda m: m.group(1) + m.group(2).lower(), txt)
'foo <seg rend="small">arsis</seg> bar'
>>>