我有一个flatfile(csv分隔符),需要用60个不同的新值替换60个值。替换平面文件中文本的脚本
Original_Value1 ---> New_Value1
Original_Value2 ---> New_Value2
Original_Value3 ---> New_Value3
Original_Value4 ---> New_Value4
....至60
文件拥有超过20万项与需要改变的60个值。什么是实现这一目标的最有效方式?
我有一个flatfile(csv分隔符),需要用60个不同的新值替换60个值。替换平面文件中文本的脚本
Original_Value1 ---> New_Value1
Original_Value2 ---> New_Value2
Original_Value3 ---> New_Value3
Original_Value4 ---> New_Value4
....至60
文件拥有超过20万项与需要改变的60个值。什么是实现这一目标的最有效方式?
假设
1)的新老值的长度可以不同
2)您不知道哪些行包含值到
循环通过文件被改变的时间提前,逐行使用fgetcsv() 检查该行中的字段,将替换视为必要条件。 使用fputcsv()编写回不同的文件()
是的旧和新值的长度不同,但有一个特定的列我正在寻找更改数据。该列包含一个代码,该代码对应于Magento实现中的类别的位置。当前值示例为“001094500”应成为“\ Store \ Shoes”谢谢您的回复! –
哦,我明白了...你要我发送邮件... – goat
说实话,我的技术能力有限,我正在学习。希望你能帮助n00b。 –
Perl。至少这是我的意见,应该是能够做到这一点的一条线沿....的
open(IN, " < filename.csv ");
open(OUT, " > output.csv ");
while (<IN>) { # reads in each line of the file
$line =~ s/Original_Value1/New_Value1/gi; # g is for global, i is to ignore case
$line =~ s/Original_Value2/New_Value2/gi; # g is for global, i is to ignore case
$line =~ s/Original_Value3/New_Value3/gi; # g is for global, i is to ignore case
# ... continue to your values... probably a better way of doing this from a file, but this is quick and dirty, and should work
print OUT $line; # prints out $line to the output file.
}
close(IN);
close(OUT);
线的东西那会很接近反正,我没有写的Perl在相当长一段时间它或许可以通过在PERL高尔夫球有人好进行优化下降到几个字符... =)
刚刚看到,这可能只是PHP的前...如果是,其他答案将会更有用... – Cyric297
我把PHP,PERL是可以接受的。因此,使用我的示例的脚本应该如下所示:open(IN,“
尝试了这个例子,并收到一个只有1个值的0k输出文件来改变。 –
下面是示例代码:
$input = 'input.txt';
$output = 'output.txt';
if ($fpin = fopen($input, 'r')) {
if ($fpout = fopen($output, 'a')) {
while ($data = fread($fpin, 1024)) {
fwrite($fpout, your_replacement_function($data));
}
fclose($fpout);
}
fclose($fpin);
}
[查找和替换使用PHP的平面文件中的值]的可能重复(http://stackoverflow.com/questions/2944080/find-and-replace-values-in-a-flat-file-using- php) – mario