Word文档中的正则表达式

2024-09-29 10:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的文本文件与不一致的引号,即

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

我想把引号的每一种形式都转换成Guillemet形式(»和«),这样例句应该是

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

我在想正则表达式

`` ["'”“](.*?)["'”“]``

但我只知道如何用Python编写代码。 有没有一种方法可以在Python中实现这一点?如果没有,有人可以提供一个提示,如何实现这一点,直接在微软Word。我试过使用find/replace和通配符,但是使用引号时的不一致性让我很困扰。你知道吗


Tags: 引号ipsumloremutdolorametsitelit
2条回答

尝试以下模式:

([“'"](?=[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的整个编码过程都很棘手,所以这是任何人的猜测。

如果您在“Find”窗口(类似于“special characters”)中选中正确的选项,那么Ms-Word可以直接使用正则表达式,因此您只需在Ms-Word中执行Find/replace。替换:

[“”'"»«]

'

如果您只想使用'字符作为引号,以上就是一个例子。 这将(例如)取代:

»consectetuer adipiscing"

使用:

'consectetuer adipiscing'

相关问题 更多 >