我有一个带有引号不一致的大文本文档,即

...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中完成操作的提示。我尝试使用查找/替换和通配符,但是使用引号引起的不一致困扰了我。

最佳答案

试试这个模式:

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


替代:

»$2«


编辑:自从您提到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)


/path/to/file.txt替换为文件的位置(使用utf-8编码保存)。

上面的代码由于标点符号中使用了字符编码,因此与标准的搜索和替换功能不同。尽管整个编码过程对于Python来说都是棘手的,但也许会有更干净的方法来获得相同的最终结果。

关于python - Word文档中的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22751134/

10-09 07:20
查看更多