gpt4 book ai didi

python - 替换文件中字符串对的快速方法

转载 作者:行者123 更新时间:2023-11-30 22:53:06 26 4
gpt4 key购买 nike

我有一个大约 10,000 行的文件,其中包含 2 列:

org_string1 \t replacement_string1
org_string2 \t replacement_string2

将所有这些 org_string 替换为另一个文本文件中相应的 replacement_string(在第二个文件中进行 10k 替换)的最佳方法是什么(速度/方便)?

我计划将它们转换为 sed 替换命令,但不确定速度性能以及是否会超过 Linux 中的最大命令行限制。

假设:

  1. 所有 org_string 和 replacement_string 都是唯一的。
  2. org_string 是输入文件中的单个单词(由空格包围)。

最佳答案

这里有一个使用 Perl 的技术,可能会有所帮助:

my %map = (
'the' => 'a',
'fox' => 'frog',
'jumps' => 'somersaults'
);

my $line = "the quick bown fox jumps over the lazy dog";

$line =~ s{\b(\w+)\b}{$map{$1} // $1}eg;

say $line;

此示例使用硬编码 HashMap orig_strings 到 replacement_strings - 在您的情况下,您将通过读取映射对文件来填充此映射哈希。

然后正则表达式使用 \b(\w+)\b 捕获该行中的每个单词,并通过 $1 传递到替换端。因为指定了 /e 选项,所以替换的右侧被视为 Perl 表达式,并且计算表达式的结果是替换文本。 $map{$1} 使用原始单词作为映射哈希的键来查找替换文本。 //$1 部分表示如果哈希查找返回 undef (即该单词没有替换项),则只需使用原始文本。

\w+ 部分将匹配单词、数字或下划线字符的字符串。您可能只需要字母字符,也许还需要撇号和连字符。要实现此目的,请使用 [a-zA-Z'-]+ 而不是 \w+

这应该非常快,因为每一行只运行一个正则表达式,并且每行中的每个单词只有一个哈希查找。

关于python - 替换文件中字符串对的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38321747/

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