精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一日一技:使用Python翻譯HTML中的文本字符串

開發 前端
你之所以會覺得這個問題很難解決,是因為你有一個錯覺,請看上面這張截圖,我打印了text_list?。打印出來是一個包含字符串的列表。所以你可能會覺得。使用lxml寫Xpath的時候,/text()返回的總是包含字符串的列表。

相信大家都用過瀏覽器的翻譯網頁功能,例如對于下圖這個英文網頁:

圖片

一鍵翻譯成中文以后是這樣的:

圖片

你可能會覺得這個功能很簡單,不就是字符串替換嗎?那你可以試一試把下面這個HTML片段中的<p>標簽下面的英文翻譯成中文。其它標簽中的不要改動:

<div>
<p>if you want to parse date and time, your could use <em>datetime</em>, by use this library, you can generate now time by one line code <span>datetime.datetime.now()</span> this is so easy.</p>
</div>

在<em>?標簽中的datetime和<span>?標簽中的datetime.datetime.now()不需要翻譯。

你一拍腦袋,馬上寫出了下面這幾行代碼(假設你已經有了一個現成的translate()函數,傳入英文,輸出中文):

from lxml.html import fromstring
source = '''<div>
<p>if you want to parse date and time, your could use <em>datetime</em>, by use this library, you can generate now time by one line code <span>datetime.datetime.now()</span> this is so easy.</p>
</div>
'''

selector = fromstring(source)
text_list = selector.xpath('//p/text()')
for text in text_list:
chinese = translate(text)
...

當你寫到這里,你應該會愣一下。因為你突然發現一個問題,怎么把中文替換回去?

不用嘗試去百度了。在今天(2022-06-20)之前,整個中文網絡里面,你找不到解決方法。

一個比較笨的辦法是直接對原始的HTML字符串進行文本替換:

for text in text_list:
chinese = translate(text)
source = source.replace(text, chinese)

但這樣做,效率非常低。因為你要不停掃描整個HTML字符串。一般一個中型網站的HTML就有幾千上萬行,十幾二十萬個字符。你每翻譯一小段就全文替換一次,這個時間會非常漫長。

那有沒有辦法只對當前這一個<p>?標簽里面的文本進行替換呢?關鍵的問題來了,你替換可以,但是怎么才能不影響這個<p>標簽下面的兩個子標簽?要保證文本和子標簽的相對位置不改變。

如果<p>標簽下面只有一段文本,沒有子標簽,那么非常簡單,如下圖所示:

圖片

但現在的問題是,<p>標簽下面有三段文本。每段文本之間還插入了其它的子標簽。我們怎么樣對每一段文本進行替換,但是又保持文本的相對順序,并且還不能影響子標簽?

圖片

p.text這種寫法首先就可以排除了,因為它沒有辦法指定替換第幾段文本。

你之所以會覺得這個問題很難解決,是因為你有一個錯覺,請看上面這張截圖,我打印了text_list?。打印出來是一個包含字符串的列表。所以你可能會覺得。使用lxml寫Xpath的時候,/text()返回的總是包含字符串的列表。

但實際上,返回的列表里面的元素并不是字符串,而是_ElementUnicodeResult對象。如下圖所示:

圖片

不是字符串就簡單了,那么我們可以獲取每一個文本對象的父標簽。然后修改父標簽下面的文本就可以了。

看到這里,你肯定會問,這三個文本節點的父標簽,不都是同一個<p>嗎?如果你覺得是,那你就犯了想當然的錯誤。我們用代碼來看看:

圖片

其實只有第一段文本的父標簽是<p>?。第二段文本的父標簽,竟然是<p>?的子標簽<em>?。第三段文本的父標簽,是<span>。

等等,如果第二段文本的父標簽是<em>?,那么<em>datetime</em>?里面的datetime?的父標簽是什么?它的父標簽也是<em>?!那么問題來了,<em>的text()?文本節點,怎么可能又是datetime?,又是<p>下面的第二段文本呢?

實際上,<em>的text()?始終都是datetime。如下圖所示:

圖片

那么,<p>?的第二段文本跟這個<em>?標簽是什么關系?實際上,這個關系叫做tail。如下圖所示:

圖片

在一個標簽里面,只有第一段text?是它真正的text()?,如果這個標簽有子標簽,那么位于子標簽后面的文本,是這個子標簽的tail?。只不過當我們在正則表達式里面寫/text()?的時候,lxml會幫我們把所有子標簽的tail都算作當前標簽的text。

我們可以使用文本節點的.is_text和.is_tail來判斷它屬于哪種文本。最終運行效果如下圖所示:

? 圖片 ?

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2022-11-06 21:04:49

字符串字段參數

2021-10-20 20:02:47

字符變量函數

2024-05-29 00:00:01

字符串Python縮進

2025-06-13 01:15:00

正則表達式大模型

2021-07-27 21:32:57

Python 延遲調用

2022-03-12 20:38:14

網頁Python測試

2021-05-08 19:33:51

移除字符零寬

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監控

2021-04-12 21:19:01

PythonMakefile項目

2022-05-02 16:27:01

JavaScriptHTMLPython

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-09-13 20:38:47

Python鏈式調用

2021-03-12 21:19:15

Python鏈式調用

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-10-15 21:08:31

PandasExcel對象

2022-06-28 09:31:44

LinuxmacOS系統

2024-08-27 22:08:13

2021-11-12 05:00:43

裝飾器代碼功能
點贊
收藏

51CTO技術棧公眾號

ww久久综合久中文字幕| 成人乱码一区二区三区| 日韩电影免费在线观看| 欧美久久久久久蜜桃| 特级西西444| 免费国产在线视频| 国产一区二区在线观看免费| 91高清视频免费| 日韩高清dvd碟片| 老汉色老汉首页av亚洲| 欧美猛男gaygay网站| 亚洲熟妇无码另类久久久| 香蕉视频免费在线播放| av成人免费在线观看| 成人欧美一区二区三区在线湿哒哒| 国产亚洲精品久久久久久无几年桃 | 男人的天堂亚洲在线| 久久久久999| 国产肥白大熟妇bbbb视频| 香港久久久电影| 欧美日韩国产另类一区| 啊啊啊一区二区| 少女频道在线观看高清| 国产精品美女久久福利网站| 久久涩涩网站| www.五月激情| 国产一区二区伦理| 国产欧美日韩丝袜精品一区| 欧美精品一二三四区| 影音先锋久久资源网| 久久精品视频导航| 天堂资源在线视频| 国产精品羞羞答答在线观看| 亚洲精品福利免费在线观看| 不卡的一区二区| 成人亚洲精品| 欧美喷潮久久久xxxxx| 欧美激情国产精品日韩| 国产第一页在线视频| 伊人开心综合网| 最新欧美日韩亚洲| 免费大片黄在线| 国产精品久久毛片a| 日韩高清国产精品| 久草视频视频在线播放| 92精品国产成人观看免费| www.久久爱.cn| 亚洲av无码一区二区三区dv| 国产精一品亚洲二区在线视频| 国产女人18毛片水18精品| 国产无遮挡又黄又爽又色视频| 午夜免费激情视频| 蜜桃视频在线观看播放| 天天影视色香欲综合网老头| 9人人澡人人爽人人精品| 亚洲一区久久久| 国产免费av电影| 精一区二区三区| 亚洲影院在线看| 亚洲第一色视频| 成人av影院在线| 久久国产精品-国产精品| 四虎在线观看| 久久精品人人爽人人爽| 日韩高清国产一区在线观看| 在线观看av的网站| 亚洲人亚洲人成电影网站色| 亚洲av综合色区| 蜜臀av在线| 精品日本高清在线播放| 欧美精品无码一区二区三区| 国产毛片精品久久| 91麻豆精品国产91久久久久久| 欧洲美女亚洲激情| 国产精品久av福利在线观看| 精品一区二区亚洲| 2019男人天堂| 一区二区三区在线电影| 97精品一区二区| 欧美日韩免费一区二区三区| 天天干天天色天天干| 在线精品视频一区| 亚洲欧美成人一区二区在线电影| 欧美 日韩 成人| 91精品国产91久久久久久黑人| 久久久久久国产精品| 欧美a视频在线观看| 久久精品国产久精国产| 91在线看网站| 国产在线视频网| 亚洲特黄一级片| 国产黄色一级网站| 欧美激情啪啪| 亚洲精品www久久久| 极品久久久久久久| 激情综合亚洲| 国产精品男女猛烈高潮激情| 国产极品久久久| 久久综合99re88久久爱| 2021狠狠干| 成人福利av| 日韩久久精品一区| 成人小视频免费看| 亚洲另类黄色| 91在线观看欧美日韩| 涩涩视频在线观看免费| 亚洲人xxxx| 亚洲第一中文av| 极品尤物一区| 久久国产加勒比精品无码| 久久久久99精品成人片三人毛片| 国产一区二区成人久久免费影院 | 国产免费黄色录像| 久久久久国产精品厨房| 91动漫在线看| 中文字幕综合| 国产亚洲精品久久久久久777| 精品亚洲永久免费| 国模一区二区三区白浆| 日韩性感在线| 中文字幕这里只有精品| 亚洲成色777777在线观看影院 | 精品免费在线观看| 亚洲欧美激情一区二区三区| 国产精品成人一区二区不卡| 国产精品69精品一区二区三区| 色婷婷av一区二区三区之红樱桃| 亚洲色图欧美激情| 最新天堂在线视频| 欧美久久精品一级c片| 欧美在线免费看| 人人妻人人澡人人爽人人欧美一区| 亚洲天堂2016| 天天操精品视频| 亚洲国产日韩欧美在线| 国产精品尤物福利片在线观看| 精品乱码一区二区三四区视频 | 日韩视频在线免费看| 精品国产午夜肉伦伦影院| 精品中文字幕视频| 99热这里精品| 亚洲精品久久久蜜桃| 91aaa精品| 伊人色**天天综合婷婷| 成人两性免费视频| 国产三级在线播放| 日韩午夜av电影| 国产免费无码一区二区视频| 国产精品18久久久| 国产在线视频在线| 东京久久高清| 66m—66摸成人免费视频| 神马久久久久| 免费毛片一区二区三区久久久| 国产精品一区二区黑人巨大| 国产精品久久三区| 四季av一区二区三区| 97精品国产| 91日本在线观看| 中文字幕在线观看播放| 日韩免费电影网站| 99精品视频99| 国产日韩精品视频一区| www.精品在线| 综合久久婷婷| 国产一级特黄a大片99| 厕沟全景美女厕沟精品| 最近的2019中文字幕免费一页 | 亚洲精品一区二区三区在线播放| 老司机免费视频一区二区| 一本—道久久a久久精品蜜桃| 欧美大片91| 97精品欧美一区二区三区| 欧美一区二区少妇| 欧美区在线观看| 国产一级在线观看视频| 久久亚洲综合色一区二区三区| 污污的网站18| 你懂的成人av| 噜噜噜噜噜久久久久久91| 91精品国产66| 欧美激情亚洲一区| 九色视频在线观看免费播放| 在线综合亚洲欧美在线视频| 免费看日韩毛片| 国产精品美女久久久久久久网站| wwwxxxx在线观看| 国产乱码精品| 国产成人精品免费看在线播放| 国语一区二区三区| 国产精品视频内| 国产免费拔擦拔擦8x高清在线人| 中文字幕免费精品一区| 欧美一区二不卡视频| 欧美性受xxxx| 日韩精品在线不卡| 国产精品毛片无遮挡高清| 精品人妻伦一二三区久| 麻豆国产精品视频| 热99这里只有精品| 图片区亚洲欧美小说区| 欧洲精品在线一区| 911亚洲精品| 国产美女久久精品| 中文在线最新版地址| 久久综合伊人77777蜜臀| 免费在线黄色电影| 日韩欧美美女一区二区三区| 中文字幕精品一区二| 亚洲国产一区视频| 91传媒免费观看| 国产午夜亚洲精品理论片色戒 | 97香蕉超级碰碰久久免费的优势| 黄色网页网址在线免费| 亚洲人成电影网站色www| 狠狠人妻久久久久久综合麻豆| 欧美午夜精品电影| 天堂а√在线中文在线新版 | av之家在线观看| 午夜精品电影| 成年人免费观看的视频| 精品国产一区二区三区| 免费国产一区二区| 老汉色老汉首页av亚洲| 国产精品国产精品国产专区不卡| 亚洲最大的免费视频网站| 国产精品吹潮在线观看| 中文字幕在线看片| 97在线免费视频| 久草在线视频网站| 欧美日韩国产91| 怡红院av在线| 久久最新资源网| 国产精品扒开做爽爽爽的视频| 亚洲欧美日韩一区二区三区在线| 香蕉视频国产在线| 亚洲精品黄网在线观看| 天天干天天操av| 亚洲激情在线观看视频免费| 欧美一级免费片| 日韩精品极品视频| 嫩草研究院在线观看| 精品视频在线播放色网色视频| 天堂av资源在线| 亚洲精品wwww| 黄视频在线观看免费| 国产午夜精品视频| 瑟瑟视频在线| 久久网福利资源网站| 性网站在线观看| 久久久在线观看| 老色鬼在线视频| 日本视频久久久| 日本黄色一区| 91久久在线播放| 日韩免费av片在线观看| 全部免费毛片在线播放网站| 日韩精品免费在线视频观看| 亚洲欧美色视频| 亚洲男人天堂久| 国产高清视频在线| 中文字幕av一区二区三区谷原希美| 成人免费在线电影| 自拍偷拍亚洲精品| www国产在线观看 | 自拍在线观看| 久久久久久成人精品| 黄色免费网站在线观看| 日韩最新av在线| 免费人成在线观看播放视频| 久久久国产一区| 女子免费在线观看视频www| 性色av一区二区三区红粉影视| 黑人巨大亚洲一区二区久 | 中文字幕伦理片| 国产精品成人网| 久久久精品国产sm调教| 黑人巨大精品欧美一区二区三区| 综合激情网五月| 色婷婷综合久久| 在线观看免费视频一区| 91国产丝袜在线播放| 一本到在线视频| 日韩一区二区中文字幕| 人妻妺妺窝人体色www聚色窝| 国产偷国产偷亚洲清高网站| www.久久热.com| 欧美精品精品精品精品免费| 美女18一级毛片一品久道久久综合| 成人高h视频在线| 色88888久久久久久影院| 五月天亚洲综合小说网| 激情av一区| 日本特黄a级片| 不卡免费追剧大全电视剧网站| 人妻少妇无码精品视频区| 阿v视频在线| 国内精久久久久久久久久人| 色豆豆成人网| 岛国视频一区| 色婷婷综合网| 国产欧美在线一区| 国产精品亚洲一区二区三区妖精| 成人午夜福利一区二区| 亚洲国产美女搞黄色| 国产又粗又猛又爽又黄视频| 国产成人av片| 国产不卡视频在线播放| www在线观看免费视频| 亚洲激情自拍偷拍| 日韩不卡高清视频| 欧美精品一区二区三区蜜桃视频| 98在线视频| 欧美一区二区三区图| 一区二区中文字幕在线观看| 亚洲国产精品久久久久婷婷老年 | 日韩伦理av| 欧美一区二区大胆人体摄影专业网站| 激情综合婷婷| 一区二区不卡视频| 日韩电影在线观看一区| aa片在线观看视频在线播放| 一区二区三区精品在线| 国产又粗又猛又黄又爽无遮挡| 伊人男人综合视频网| 免费福利视频一区二区三区| 激情视频一区二区| 国产一区日韩一区| 欧美另类99xxxxx| 99久久久久久久久| 精品国产免费一区二区三区四区| 黄网站免费在线观看| 国产乱肥老妇国产一区二| 你懂的视频欧美| 国产91对白刺激露脸在线观看| k8久久久一区二区三区| 伊人365影院| 亚洲成人精品视频| ****av在线网毛片| 国产亚洲精品自在久久| 亚洲大片av| 在线免费观看a级片| 婷婷久久综合九色综合伊人色| 黑人乱码一区二区三区av| 午夜精品理论片| 欧美变态挠脚心| 久久久噜噜噜www成人网| 91丨九色丨蝌蚪富婆spa| 欧美日韩一二三四区| 亚洲男人天堂网| 香蕉成人影院| 中文字幕中文字幕99| 国产在线观看免费一区| 欧美成人三级在线观看| 精品国产乱码久久久久久久久| √天堂8资源中文在线| 国产高清精品一区二区三区| 国产一区亚洲| 欲求不满的岳中文字幕| 日韩欧美精品中文字幕| 成人精品一区二区| 国产欧美精品一区二区三区介绍| 国产精品久久久久久麻豆一区软件| 一区二区久久精品| 亚洲午夜精品网| 欧美视频免费一区二区三区| 国产精品美女久久| 欧美成人嫩草网站| 国产真实乱人偷精品| 欧美优质美女网站| 在线观看av免费| 久久久久久九九九九| 久久久999久久久| 日韩大片免费观看视频播放| 少妇精品视频一区二区免费看| 久久免费看毛片| 成人午夜激情片| 青青国产在线视频| 欧美刺激性大交免费视频| 秋霞综合在线视频| 成人亚洲精品777777大片| 一区二区三区中文免费| 四虎精品在永久在线观看 | 黄色片免费观看视频| 一区二区三区视频观看| 99精品国产高清一区二区麻豆| 国产男女激情视频| 亚洲一区视频在线| 成人性爱视频在线观看| 国产精华一区| 精品一区二区三区欧美| 国产成人精品片| 久久亚洲成人精品| 少妇精品久久久| 国产精品无码自拍| 欧美日韩五月天| 中文字幕人成乱码在线观看| 在线观看污视频| 欧美国产国产综合| 婷婷色在线视频|