考虑一个数字列表:
1 2 3 17 8 9 23 ...etc.
我想根据另一个列表将这些数字替换为另一个数字:
1001=1 1002=2 1003=3 1004=8 1005=23 1006=9 1007=17
最快的方法是什么? (比如在Notepad ++中使用正则表达式等)
答案 0 :(得分:3)
我在perl中做这种事 - 比如
%replacements = (1=>1001, 2=>1002, 3=>1003 );
while (<>) {
chomp;
@nums = split(/ /);
@outnums = ();
foreach $n (@nums) {
$outnums[$#outnums + 1] = $replacements{$n};
}
print join(' ', @outnums)."\n";
}
然后运行
perl scriptname.pl < infile > outfile
答案 1 :(得分:1)
将映射放入数组(或字典中,具体取决于数字的方式):
map[oldvalue] = newvalue;
然后迭代原始列表并替换,例如:
oldlist = '1\n2\n3\n17'
map = {'1' : '1001', '2': '1002', '3' : '1003', '17' : '1007'}
result = ''
for num in oldlist.split('\n'):
result += map[num] + '\n'
上查看
答案 2 :(得分:1)
您不需要正则表达式,因为您需要以某种方式将数字映射到其替换。这是Ruby中的一个脚本:
给出一个名为'nums'的文件,如下所示:
1
2
3
......等等......
map = {
1 => 1000,
2 => 2000,
...etc...
}
results = File.open('output','a')
File.open('nums').readlines.each do |line|
results.write( map[line.to_i].to_s + "\n" ) if map.has_key?(line.to_i)
end
运行如下:ruby thescript.rb
,文件'output'现在设置了新号码。