2014-03-30 103 views
1

我有不一致的引號一個大的文本文件,即正則表達式中的Word文檔

...Dolore magna aliquam 「lorem ipsum」 dolor sit amet, 'consectetuer adipiscing" elit, volutpat. Ut "wisi" enim... 

,我想引號書名號樣式(»和«)的每一個風格轉換,使例句應像

...Dolore magna aliquam »lorem ipsum« dolor sit amet, »consectetuer adipiscing« elit, volutpat. Ut »wisi« enim... 

我在想正則表達式像

`` ["'」「](.*?)["'」「]`` 

但我只知道如何用Python編寫代碼。 有沒有一種方法可以在Python中實現?如果不是的話,有人可以提供一個關於如何直接在MS Word中完成的提示。我嘗試使用查找/替換和通配符,但使用引號的不一致錯誤了我。

回答

1

嘗試此圖案:

([「'"](?=[a-zA-Z\,\.\s])([a-zA-Z\,\.\s]*)[」'"]) 

更換:

»$2« 

EDIT:既然你提到的Python我想出的東西,一定要工作:

#!/usr/bin/python 
# coding: utf-8 
import os, sys 
import re 
import codecs 

with codecs.open('/path/to/file.txt', 'r', 'utf-8') as f: 
    encoded = f.read() 
    encoded = encoded.replace(u'\u201c', u'\"') 
    encoded = encoded.replace(u'\u201d', u'\"') 
    encoded = encoded.encode('utf-8') 
    result = re.sub('(\s[\「\'\"](?=[a-zA-Z\,\.\s]*)([a-zA-Z\,\.\s]*)[\」\'\"]\s)', ' »\\2« ', encoded) 
    decoded_result = result.decode('utf-8') 
    print format(decoded_result) 

與您的文件(保存UTF-8編碼)的位置更換/path/to/file.txt

由於在標點符號中使用了字符編碼,上面的代碼與標準的搜索和替換有所不同。雖然整個編碼的事情對Python來說都很棘手,所以可能有更簡單的方法來獲得相同的最終結果,所以這是任何人的猜測。

+1

如果你有重音詞,那麼:'([\ s「'」](?= [a-zA- Z \,\。\ s])([a-zA-Z \,\。\ s] +)[「'」] \ s)' –

+0

謝謝!模式不能返回任何東西我的Word 2007,但可能我做錯了什麼,我會再次檢查一次。 – hihowareyou

+0

試試我已經添加到答案中的Python代碼,並讓我知道它是如何工作的 –

1

如果您在「查找」窗口(如「特殊字符」)中檢查了正確的選項,Word可以直接使用正則表達式,因此您只需執行Ms Word中的查找/替換。替換:

[「」'"»«] 

' 

以上就是如果你想只使用'字符作爲引號的例子。 這將(例如)取代:

»consectetuer adipiscing" 

與:

'consectetuer adipiscing' 
+0

感謝您的快速回復!但是,這隻有在我想替換爲撇號(')引用時纔有效。其他方式,用»«取代其他的引號會導致一些缺點。也就是說,'這個例子'可能會導致這個例子»,而不是»這個例子«。 – hihowareyou

+0

所以,如果我明白你的需要,你不想''foo»'被'foo''替換嗎?兩個引號應該是同質的以便被替換? – xav

+0

那麼,目標是更改每一個引用標記爲同一個''«'',即'»這個«'而不是'this','this','this'等。 – hihowareyou

相關問題