我有一个如下所示的翻译文件:
Apple=Apfel
Banana=Banane
Cherry=Kirsche
Train=Zug
...还有 500 多行类似的内容
现在我有一个需要处理文本的文件。只需要替换文本的某些部分,例如:
The [[Apple]] was next to the [[Banana]]. Meanwhile the [[Cherry]] was chilling by the [[Train]].
结果需要
The [[Apfel]] was next to the [[Banane]]. Meanwhile the [[Kirsche]] was chilling by the [[Zug]].
手动复制/粘贴的事件太多了。有什么简单的方法可以搜索 [[XXX]] 并从另一个文件中替换?
答案1
Notepad++ 可用于各种用途,从记笔记到高级文本处理。但正如评论中提到的,你需要安装Python 脚本来自插件管理器的插件。
将替换后的文件复制到例如D:/_working/paired-search-replace.txt并用空格分隔值,或者像你所做的那样=
:
Apple=Apfel
Banana=Banane
Cherry=Kirsche
Train=Zug
satellite antenna=Satellitenantenne
创建新脚本。
import re
separators = "=", "\n"
def custom_split(sepr_list, str_to_split):
# create regular expression dynamically
regular_exp = '|'.join(map(re.escape, sepr_list))
return re.split(regular_exp, str_to_split)
with open('D:/_working/paired-search-replace.txt') as f:
for l in f:
s = custom_split(separators, l)
editor.replace(s[0], s[1])
根据您需要处理和替换的文本运行新脚本。
编辑:
为了在您的特殊情况下包含开始和结束方括号,可以在脚本中添加以下内容:
with open("D:/_working/paired-search-replace.txt") as f:
for l in f:
s = custom_split(separators, l)
s[0] = "[[" + s[0] + "]]"
s[1] = "[[" + s[1] + "]]"
editor.replace(s[0], s[1])
仅提供少量翻译列表:
如果您不想使用其他人提到的脚本,则需要使用 Notepad++ 执行一些特殊步骤。请注意,这受搜索和替换字符串长度的限制。
将配对的翻译列表复制到两个文件,例如search-source.txt
和replace-target.txt
(用于处理),并编辑内容和格式以搜索和替换字符串,如下所示。
您可以使用 Notepad++ 的 RegEx 功能和“列编辑器”模式来实现此目的。例如,通过按住并向Alt下拖动列来选择所需的列。然后转到“编辑 -> 列编辑器”。选择“要插入的数字”按钮,然后选择起始值和增量。它将用您想要的值替换列。稍后使用STRG+J连接行
然后尝试使用正则表达式替换
(Apple)|(Banana)|(Cherry)|(Train)
和
(?1Apfel)(?2Banane)(?3Kirsche)(?4Zug)