python - nvda 的正则表达式在所有大写字母之间放置空格?

标签 python regex

因此,我使用了 NVDA,这是一款很多人都在使用的免费盲人屏幕阅读器,以及一款语音合成器。我正在构建一个它需要的插件的修改版本库,以及可以包含 python 可接受的正则表达式的词典,以及标准的单词替换操作。 我的问题是,我不知道如何设计一个正则表达式来在大写字母之间放置一个空格,例如在 ANM 中,合成器将其视为一个词,而不是按应有的方式拼写。 我对 python 的了解不够,无法为这个东西手动编写插件,我只对这种东西使用正则表达式。我确实了解正则表达式基础知识和一般实现,您可以通过谷歌搜索“大约 55 分钟内的正则表达式”找到这些知识。 我希望它做这样的事情。

Input: ANM
Output: A N M

还有这个语音合成器的工作方式,我可能不得不用 eh 替换 A,这样就可以了。

Input: ANM
Output: Eh N M

如果可能的话,你们中的任何人都可以为我提供一个正则表达式来执行此操作吗?不,我不认为我可以在循环中编译它们,因为我没有编写 python。

最佳答案

这应该可以解决大写字母的问题,它使用 ?= 来预测下一个大写字母,而不会“耗尽”:

>>> import re
>>> re.sub("([A-Z])(?=[A-Z])", r"\1 ", "ABC thIs iS XYZ a Test")
'A B C thIs iS X Y Z a Test'

如果要进行大量替换,将它们放入单个变量中可能是最简单的方法:

replacements = [("A", "eh"), ("B", "bee"), ("X", "ex")]
result = re.sub("([A-Z])(?=[A-Z])", r"\1 ", "ABC thIs iS XYZX. A Xylophone")
for source, dest in replacements:
    result = re.sub("("+source+r")(?=\W)" , dest, result)
print(result)

输出:

eh bee C thIs iS ex Y Z ex. eh Xylophone

我在“替换”代码中构建了一个正则表达式,以正确处理句子末尾的大写单词和独立大写字母。如果你想避免更换例如独立的 'A' 和 'eh' 然后是@fjarri 的回答中提到的更高级的正则表达式替换函数。

关于python - nvda 的正则表达式在所有大写字母之间放置空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861447/

相关文章:

python - 将输入列表中的字典元素附加到元组列表

regex - 在 Ansible 中,如何在使用过滤器的变量定义中使用变量

Javascript 匹配并替换为 unicode

java - 正则表达式删除除字符和数字之外的所有内容

regex - 访问控制正则表达式 symfony 2

python - 重用 psycopg2.execute 中的参数

python - BeautifulSoup Replace_with 用于非标准标签

python - Paramiko AuthenticationException 问题

python - Python 中的示例函数 : counting words

c# - 正在解析 '\L' - 无法识别的转义序列