我使用Text :: CSV来解析csv文件。由于某些不良字符,并非所有行都可以被解析 Text :: CSV文档说:
CSV字段中的允许字符包括0x09(制表符)和包含范围0x20(空格)到0x7E(代字号)。如何尽可能简单地过滤掉任何不允许的字符?
答案 0 :(得分:9)
您可能希望使用binary
标志告诉Text::CSV停止强制执行仅限ASCII的规则,而不是过滤掉“坏”字符:
my $csv = Text::CSV->new ({ binary => 1 });
如果您正在尝试读取非ASCII字符集(例如Latin-1或UTF-8)中的文件,则应查看Text::CSV::Encoded模块。
答案 1 :(得分:0)
$subject =~ s/[^\x09\x20-\x7E]+//g;
将删除所有这些字符。
但这似乎是对CSV文件中允许的内容的一个奇怪的限制。我还没有看到一个无法处理的csv解析器,例如,变音符号和其他非ASCII字符。不过我不知道Perl。