亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

為了邊看美劇邊學(xué)英語(yǔ),我寫(xiě)了個(gè)字幕處理腳本

xbynet / 2137人閱讀

摘要:意味著字符串必須以結(jié)束。匹配不在方括號(hào)內(nèi)的任意字符中轉(zhuǎn)義字符使用倒斜杠。你需要輸入轉(zhuǎn)義字符,才能打印出一個(gè)倒斜杠。但是,通過(guò)在字符串的第一個(gè)引號(hào)之前加上,可以將該字符串標(biāo)記為原始字符串,它不包括轉(zhuǎn)義字符。

每個(gè)英語(yǔ)學(xué)渣(好吧,其實(shí)這個(gè)說(shuō)的就是學(xué)渣本渣了♀)都有這樣一個(gè)夢(mèng)想: 能夠一邊輕松愉快地看著美劇,一邊自己的英語(yǔ)聽(tīng)力水平還能蹭蹭地往上漲 。知乎上也有很多人分享了自己通過(guò)美劇練習(xí)聽(tīng)力的方法,比如說(shuō) 只開(kāi)英文字幕 或者 干脆就不要字幕 。但是這兩個(gè)方法都有自己的缺點(diǎn),只開(kāi)英文字幕的方法雖然說(shuō)避免了下意識(shí)只看中文,但是卻造成了只看字幕不聽(tīng)讀音,從而練習(xí)了閱讀忽略了聽(tīng)力;不開(kāi)字幕的方法確實(shí)做到了強(qiáng)迫自己必須認(rèn)真聽(tīng),可是對(duì)于很多人來(lái)說(shuō),美劇中充滿了大量的陌生詞匯,比如說(shuō):

這句話中的 betrayal 是背叛的名詞形式,可能很多人就不認(rèn)識(shí),或者說(shuō)認(rèn)識(shí)但是卻沒(méi)聽(tīng)過(guò)他的正確發(fā)音。這樣一來(lái),對(duì)這句話的理解就會(huì)出現(xiàn)障礙。美劇中還有很多類似情況,用這樣的聽(tīng)力材料顯然是不適合的。為了應(yīng)對(duì)這種情況,我有了個(gè)想法:將字幕中的詞匯拆分,并進(jìn)行詞頻的檢測(cè), 如果詞頻在 4000(可以根據(jù)自己的情況進(jìn)行調(diào)整)以內(nèi),則將單詞刪除,如果詞頻在 4000 以外,則多帶帶標(biāo)注出該詞的中文 ,效果如下:

這樣一來(lái),這句話對(duì)于我來(lái)說(shuō)就沒(méi)有任何詞匯上的障礙,假如一遍聽(tīng)不懂,我就可以放心大膽的再聽(tīng)一遍而不必?fù)?dān)心是由于詞匯的問(wèn)題造成的理解障礙。

下面介紹程序的大體思路:

首先觀察字幕文件,選擇后綴名為 srt 的字幕文件用記事本打開(kāi)如下(其他類型的字幕文件用記事本打開(kāi)以后格式非常復(fù)雜,此處不討論):

觀察文本特點(diǎn),撰寫(xiě)相應(yīng)的 正則表達(dá)式 。

雖然在 Python 中使用正則表達(dá)式有幾個(gè)步驟,但每一步都相當(dāng)簡(jiǎn)單。

import re導(dǎo)入正則表達(dá)式模塊。

re.compile()函數(shù)創(chuàng)建一個(gè)Regex對(duì)象(記得使用原始字符串)。

Regex對(duì)象的search()方法傳入想查找的字符串。它返回一個(gè)Match對(duì)象。

調(diào)用Match對(duì)象的group()方法,返回實(shí)際匹配文本的字符串。

常用的匹配規(guī)則:

?匹配零次或一次前面的分組。

*匹配零次或多次前面的分組。

+匹配一次或多次前面的分組。

{n}匹配 n 次前面的分組。

{n,}匹配 n 次或更多前面的分組。

{,m}匹配零次到 m 次前面的分組。

{n,m}匹配至少 n 次、至多 m 次前面的分組。

{n,m}?*?+?對(duì)前面的分組進(jìn)行非貪心匹配。

^spam意味著字符串必須以 spam 開(kāi)始。

spam$意味著字符串必須以 spam 結(jié)束。

.匹配所有字符,換行符除外。

dws分別匹配數(shù)字、單詞和空格。

D、WS分別匹配出數(shù)字、單詞和空格之外的所有字符。

[abc]匹配方括號(hào)內(nèi)的任意字符(諸如 a、b 或 c)。

[^abc]匹配不在方括號(hào)內(nèi)的任意字符

Python中轉(zhuǎn)義字符使用倒斜杠()。字符串" "表示一個(gè)換行字符,而不是倒斜杠加上一個(gè)小寫(xiě)的n。你需要輸入轉(zhuǎn)義字符,才能打印出一個(gè)倒斜杠。所以" "表示一個(gè)倒斜杠加上一個(gè)小寫(xiě)的 n。但是,通過(guò)在字符串的第一個(gè)引號(hào)之前加上r,可以將該字符串標(biāo)記為原始字符串,它不包括轉(zhuǎn)義字符。輸入r"ffffd-ffffd-ffffdd",比輸入"ffffd-ffffd-ffffdd"要容易得多。

由上述相應(yīng)規(guī)則結(jié)合文本特點(diǎn)得到:


#空行、行數(shù)標(biāo)號(hào)正則表達(dá)式
rgx_none_and_num = re.compile(r"d{1,2}
")
#時(shí)間正則表達(dá)式
rgx_time = re.compile(r"dd:dd:dd,ffffd --> dd:dd:dd,ffffd
")

之后,因?yàn)橐樵冊(cè)~頻,我在事先已經(jīng)準(zhǔn)備好了詞頻表:

要處理表格,需要用到 openpyxl 模塊,下面是從電子表格文件中讀取單元格涉及的所有函數(shù)、方法和數(shù)據(jù)類型。

導(dǎo)入openpyxl模塊。

調(diào)用openpyxl.load_workbook()函數(shù)。

取得Workbook對(duì)象。

調(diào)用get_active_sheet()get_sheet_by_name()工作簿方法。

取得Worksheet對(duì)象。

使用索引或工作表的cell()方法,帶上rowcolumn關(guān)鍵字參數(shù)。

取得Cell對(duì)象。

讀取Cell對(duì)象的value屬性。

由上述結(jié)合表格內(nèi)容,建立詞庫(kù)字典:


#詞頻在4000以后的字典:
wordlist4001 = {}
#事先將名為“1-20000.xlsx”的詞頻表放在當(dāng)前工作目錄
excel_content = openpyxl.load_workbook("1-20000.xlsx") 
sheet = excel_content["Sheet1"]
for row in range(4000,20201):
    wordlist4001[sheet.cell(row,1).value] = sheet.cell(row,2).value
#詞頻在4000以前的字典:
wordlist4000 = {}
for row in range(1,4001):
    wordlist4000[sheet.cell(row,1).value] = sheet.cell(row,2).value

所有準(zhǔn)備工作完成后,開(kāi)始讀取字幕文件和處理字幕文件,最后新建一個(gè)處理過(guò)后的字幕文件。完整程序如下:


# -*- coding:utf-8 -*-

#導(dǎo)入模塊
import re,openpyxl

#讀入字幕文件
text=open("The.Big.Bang.Theory.s05e05.720p.x264.chs&eng.srt","r")

#空行、行數(shù)標(biāo)號(hào)正則表達(dá)式
rgx_none_and_num = re.compile(r"d{1,2}
")

#時(shí)間正則表達(dá)式
rgx_time = re.compile(r"dd:dd:dd,ffffd --> dd:dd:dd,ffffd
")

#處理字幕文件
first_step = text.readlines()

#新建一個(gè)字幕文件
new_file = open("C:UsersSYQDesktop處理版.srt","w")

#建立4000后的字典
wordlist4001 = {}
excel_content = openpyxl.load_workbook("1-20000.xlsx")
sheet = excel_content["Sheet1"]
for row in range(4000,20201):
    wordlist4001[sheet.cell(row,1).value] = sheet.cell(row,2).value
#建立4000前的字典
wordlist4000 = {}
for row in range(1,4001):
    wordlist4000[sheet.cell(row,1).value] = sheet.cell(row,2).value

#挑選出文字行進(jìn)行處理
for line in first_step:

    #如果為空行,行數(shù)標(biāo)號(hào),則不動(dòng)
    if rgx_none_and_num.search(line):
        new_file.write(line)

    #如果為時(shí)間行則不動(dòng)
    elif rgx_time.search(line):
        new_file.write(line)

    #如果為字幕行,則處理
    else:
        words = line.lower().split()
        for word in words:

            #如果單詞不在字典中,則跳過(guò)
            if word in wordlist4000:
                pass
            #如果單詞在字典中,則添加翻譯
            elif word not in wordlist4001:
                pass
            else:
                new_word = word + ":" + wordlist4001[word] +"
"
                new_file.write(new_word)

#關(guān)閉文件
text.close()
new_file.close()

因?yàn)槲乙彩且粋€(gè) python 初學(xué)者,因此在實(shí)現(xiàn)這個(gè)想法的過(guò)程中也遇到了很多問(wèn)題,最后實(shí)現(xiàn)的方法可能也顯得很笨拙,但是最后實(shí)現(xiàn)了還是很開(kāi)心的,哈哈哈。

----------

本文是我們編程教室新春征稿活動(dòng)的一篇投稿,來(lái)自作者 @ 司夜 。他和我們很多讀者一樣,學(xué)習(xí) python 的時(shí)間并不長(zhǎng),但已經(jīng)把 python 應(yīng)用到自己的日常學(xué)習(xí)生活中,并整理成文投稿給我們,這很值得肯定。 在實(shí)踐中應(yīng)用向他人講解 都是非常好的學(xué)習(xí)方式。不用在意自己寫(xiě)的代碼還不夠完善, Done is better than perfect!  
我們編程教室會(huì)持續(xù)向所有人開(kāi)放,如果有投稿或參與志愿者的意向,歡迎隨時(shí)在公眾號(hào)里給我們留言。
另外,關(guān)于編程與英語(yǔ)的結(jié)合,我們之前也有過(guò)不少文章,感興趣的可以閱讀:
Crossin:我們用程序整理出了一份Python英語(yǔ)高頻詞匯表,拿走不謝!
分享一個(gè)強(qiáng)大的英漢詞典開(kāi)源數(shù)據(jù)庫(kù)
英語(yǔ) vs 編程
【每周一坑】單詞本 (此系列可在公眾號(hào)“ 每周一坑 ”欄目中查看)

════

其他文章及回答:

學(xué)編程:如何自學(xué)Python | 新手引導(dǎo) | 一圖學(xué)Python

開(kāi)發(fā)案例:智能防擋彈幕 | 紅包提醒 | 流浪地球

歡迎搜索及關(guān)注: Crossin的編程教室

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/43313.html

相關(guān)文章

  • 來(lái) DIY 個(gè)機(jī)器人 - 收藏集 - 掘金

    摘要:能不能省掉這些煩瑣的步驟,讓開(kāi)發(fā)人員自己完成呢現(xiàn)在好了,你可以用和把聊天機(jī)器人接入微信工具資源掘金今晚看了個(gè)電影,回得有點(diǎn)遲。 小花貓-網(wǎng)頁(yè)聊天機(jī)器人 - 前端 - 掘金 基于圖靈機(jī)器人API的網(wǎng)頁(yè)聊天機(jī)器人,輸入二維碼+你要說(shuō)的話有驚喜哦~~~(菜單中的功能尚未開(kāi)發(fā)完成,玩玩聊天功能就好了~)代碼開(kāi)源在https://github.com/ColorfulCa... 了~... (英...

    mrli2016 評(píng)論0 收藏0
  • Hello World!一個(gè)計(jì)算機(jī)準(zhǔn)大一小白的學(xué)習(xí)路徑規(guī)劃

    摘要:今天主要說(shuō)一下個(gè)人情況和學(xué)習(xí)路徑規(guī)劃。個(gè)人情況作為浙江新高考最后一屆小白鼠,經(jīng)歷了許許多多手動(dòng)和諧的事情,但是七選三有技術(shù)是唯一好的一件事情,讓我有了一點(diǎn)編程的基礎(chǔ)。 前言 Hello World!這是我思否的第一篇技術(shù)博客(不知道算不算),剛剛經(jīng)歷了高考,有個(gè)10+分的滑鐵盧,現(xiàn)坐標(biāo)浙江杭州,被西南某末流211機(jī)械專業(yè)錄取。雖然被苦x的機(jī)械錄取,但還是對(duì)計(jì)算機(jī)有著幻想。以后想通...

    Fourierr 評(píng)論0 收藏0
  • Hello World!一個(gè)計(jì)算機(jī)準(zhǔn)大一小白的學(xué)習(xí)路徑規(guī)劃

    摘要:今天主要說(shuō)一下個(gè)人情況和學(xué)習(xí)路徑規(guī)劃。個(gè)人情況作為浙江新高考最后一屆小白鼠,經(jīng)歷了許許多多手動(dòng)和諧的事情,但是七選三有技術(shù)是唯一好的一件事情,讓我有了一點(diǎn)編程的基礎(chǔ)。 前言 Hello World!這是我思否的第一篇技術(shù)博客(不知道算不算),剛剛經(jīng)歷了高考,有個(gè)10+分的滑鐵盧,現(xiàn)坐標(biāo)浙江杭州,被西南某末流211機(jī)械專業(yè)錄取。雖然被苦x的機(jī)械錄取,但還是對(duì)計(jì)算機(jī)有著幻想。以后想通...

    X1nFLY 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<