比较文件以在 ruby returns 错误结果中找到它们之间的差异。
comparing files to find difference between them in ruby returns wrong result.
我正在尝试比较两个文本文件并将它们的差异写入另一个文本文件。但我得到了错误的差异。也就是说,两个文件中都存在的名称也属于差异文件。
我正在使用我从 Whosebug 获得的代码。
#new file
f1 = IO.readlines("file1.txt").map(&:chomp)
#old file
f2 = IO.readlines("file2.txt").map(&:chomp)
File.open("result.txt","w"){ |f| f.write("NEED TO ADD:\n")}
File.open("result.txt","a"){ |f| f.write((f1-f2).join("\n")) }
File.open("result.txt","a"){ |f| f.write("--------------------\n")}
File.open("result.txt","a"){ |f| f.write("NEED TO REMOVE:\n")}
File.open("result.txt","a"){ |f| f.write((f2-f1).join("\n")) }
我的 file1.txt 和 file2.txt
中有以下内容
file1.txt 包含:
colors
channel [v]
star plus
star utsav
sony
life ok
zee salaam
zee tv
nepal one
zee anmol
flowers tv
file2.txt 包含:
colors
sony entertainment
star plus
star utsav
zee tv
life ok
dd national
etc bollywood
zee anmol
我的 result.txt 文件包含:
NEED TO ADD:
colors
channel [v]
star plus
star utsav
sony
life ok
zee salaam
zee tv
nepal one
zee anmol
flowers tv
---------------------------------------------------
NEED TO REMOVE:
colors
sony entertainment
star plus
star utsav
zee tv
life ok
dd national
etc bollywood
zee anmol
我希望你能从结果文件中理解我的问题。帮助我直接回答我是新手。
看起来您在 file1.txt 中有尾随空格,这导致了差异。
例如"colors "
不等于 "colors"
,导致它们被列在不同的部分。
如果你想在比较行之前去除所有前导和尾随空格,你可以使用 .strip
:
f1 = IO.readlines("file1.txt").map(&:strip)
f2 = IO.readlines("file2.txt").map(&:strip)
这应该会产生您预期的结果,即使您不小心有一些尾随空格。
我正在尝试比较两个文本文件并将它们的差异写入另一个文本文件。但我得到了错误的差异。也就是说,两个文件中都存在的名称也属于差异文件。
我正在使用我从 Whosebug 获得的代码。
#new file
f1 = IO.readlines("file1.txt").map(&:chomp)
#old file
f2 = IO.readlines("file2.txt").map(&:chomp)
File.open("result.txt","w"){ |f| f.write("NEED TO ADD:\n")}
File.open("result.txt","a"){ |f| f.write((f1-f2).join("\n")) }
File.open("result.txt","a"){ |f| f.write("--------------------\n")}
File.open("result.txt","a"){ |f| f.write("NEED TO REMOVE:\n")}
File.open("result.txt","a"){ |f| f.write((f2-f1).join("\n")) }
我的 file1.txt 和 file2.txt
中有以下内容file1.txt 包含:
colors
channel [v]
star plus
star utsav
sony
life ok
zee salaam
zee tv
nepal one
zee anmol
flowers tv
file2.txt 包含:
colors
sony entertainment
star plus
star utsav
zee tv
life ok
dd national
etc bollywood
zee anmol
我的 result.txt 文件包含:
NEED TO ADD:
colors
channel [v]
star plus
star utsav
sony
life ok
zee salaam
zee tv
nepal one
zee anmol
flowers tv
---------------------------------------------------
NEED TO REMOVE:
colors
sony entertainment
star plus
star utsav
zee tv
life ok
dd national
etc bollywood
zee anmol
我希望你能从结果文件中理解我的问题。帮助我直接回答我是新手。
看起来您在 file1.txt 中有尾随空格,这导致了差异。
例如"colors "
不等于 "colors"
,导致它们被列在不同的部分。
如果你想在比较行之前去除所有前导和尾随空格,你可以使用 .strip
:
f1 = IO.readlines("file1.txt").map(&:strip)
f2 = IO.readlines("file2.txt").map(&:strip)
这应该会产生您预期的结果,即使您不小心有一些尾随空格。