我有一个CSV文件,里面有47001行。然而,当我在Excel中打开它时,只有31641行。
我知道47001是正确的行数;它是一个数据库表的导出,我知道它的大小是47001。另外:wc -l my.csv返回47001。
因此,Excel的解析失败。我怀疑在这个文档中有一些古怪的控制或空格字符。
如何找出某些文档中使用的字符的多样性?
例如,考虑这个输入文件:ABCAAAaaa\n。
我希望文件中使用的字符的字母表是:ABCa\n。
也许如果我们压缩它,我们可以以某种方式读取赫夫曼树
我怀疑这将是教育比较UTF-8字符品种与ASCII字符品种。例如: Excel可以解析ASCII中的多字节字符,从而将一些字节解释为控制代码点。
发布于 2017-03-09 13:38:45
在这里,如果您是在linux上(除了linux之外,后面的逻辑可能是相同的):
sed 's/./&\n/g' | sort -u | tr -d '\n'发生了什么:-首先用字母替换所有字母,后面是"\n“新行,然后对所有字符进行排序并打印uniq事件--删除所有"\n”
然后输入文件:
ABCAAAaaa威尔变成:
A
B
C
A
A
A
a
a
a排序后:
a
a
a
A
A
A
A
B
C然后在uniq之后:
A
B
C
a最后产出:
aABC发布于 2017-03-10 01:18:49
您可以从原始文件中删除一些不太可能被更改的列,方法是传递被解析和写入的循环,例如,像名称或数字这样的纯文本列。名字会很棒的。然后让该文件传递循环并将其与原始文件进行比较:
下面是代码:
cut -d, -f3,6,8 > columns.csv这假设列3、6和8是名称列,逗号是分隔符。根据输入文件调整这些值。使用单一列也可以。
现在调用Excel,解析文件columns.csv,再次将其写成csv文件columns2.csv (当然是使用相同的分隔符)。然后:
diff columns.csv columns2.csv | less像meld这样的工具,而不是diff,也可以方便地分析这些差异。
这将显示→解析→转储周期更改了哪些行。希望它只会影响到你正在寻找的线路。
https://stackoverflow.com/questions/42695979
复制相似问题