2012-12-14 31 views
1

我有一個巨大的文件,其中包含大約兩天的轉錄語言的過度長度。我猜想超過100,000個單詞。由python分割帶條件運算符的文本文件

在轉錄過程中,我通過將「< - 名稱 - >」標記分隔爲不同的塊。我的問題是,是否可以自動將它們處理成name_speach.txt命名約定中的文件?

謝謝!!!!

測試用例:

測試用例

<--測試0--> 
這個是一段測試內容,a quick fox jumps over a lazy dog. 

<——測試1——> 
,a quick fox just over 啊 辣子 dog!!?是嗎? 

<——測試2——> 
這是一段測試用的text,嗯! 

<--Test case 3--> 
/* sound track lost @153:12.236 -- 153.18.222 */ 
… 
A quick fox jumps over a {lazy|lame} dog. 
+0

取決於以及如何格式化您的數據......搞什麼名堂你試過這麼遠嗎? –

+0

@JonClements每個「<-- Name -->」都是分開的一行,整個文檔中沒有其他地方以「< - 」開頭,既不在行的開頭,也不在句子的中間。 –

+0

您能否顯示一些示例文本。 – enginefree

回答

1

所以,你要搜索每個模式「< - 姓名 - >」在一個文本文件(100000個字不是計算機內存非常巨大, 我認爲)。

您可以使用正則表達式搜索標籤。

在Python中,這是這樣的:

import re 

NAMETAG = r'\<\-\- (?P<name>.*?) \-\-\>' 

# find all nametags in your string 
matches = re.findall(NAMETAG, yourtext) 

offset_start_list = [] 
offset_end_list = [] 
name_list = [] 

for m in matches: 
    name = m.groups()['name'] 
    name_list.append(name) 

    # find content offset after name tag 
    offset_start_list.append(m.end() + 1) 

    # the last content's end 
    offset_end_list.append(m.start()) 


offset_end_list.pop(0) 
offset_end_list.append(len(yourtext)) 

for name, start, end in zip(name_list, offset_start_list, offset_end_list): 
    # save your files here 
+0

**謝謝!**這應該解決我的問題! –