gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:37 26 4
gpt4 key购买 nike

因此,我使用了 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com