Wolfram mathematica 使用ReadList读取UTF-8文本文件
是否可以使用Wolfram mathematica 使用ReadList读取UTF-8文本文件,wolfram-mathematica,Wolfram Mathematica,是否可以使用ReadList读取使用ReadList[…,Word]的UTF-8(或任何其他)编码文本文件,还是仅使用ASCII码?如果仅为ASCII码,是否可以以良好的性能“修复”已读取数据的编码(即保持ReadList优于Import)的性能优势) Import[…,CharacterEncoding->“UTF8”]可以工作,但它比ReadList慢很多$CharacterEncoding对ReadList 有关在大型输入上测试性能的信息,请参阅中的测试文件 以下是大型ish文本文件中
ReadList
读取使用ReadList[…,Word]
的UTF-8(或任何其他)编码文本文件,还是仅使用ASCII码?如果仅为ASCII码,是否可以以良好的性能“修复”已读取数据的编码(即保持ReadList
优于Import
)的性能优势)
Import[…,CharacterEncoding->“UTF8”]
可以工作,但它比ReadList
慢很多$CharacterEncoding
对ReadList
有关在大型输入上测试性能的信息,请参阅中的测试文件
以下是大型ish文本文件中答案的计时: 导入
In[2]:= Timing[
data = Import[file, "Text"];
]
Out[2]= {5.234, Null}
海克
In[4]:= Timing[
data = ReadList[file, String];
FromCharacterCode[ToCharacterCode[data], "UTF8"];
]
Out[4]= {4.328, Null}
巫师先生
In[5]:= Timing[
string = FromCharacterCode[BinaryReadList[file], "UTF-8"];
]
Out[5]= {2.281, Null}
如果我省略了
Word
,则此操作有效:
$CharacterEncoding = "UTF-8";
ReadList["UTF8.txt"]
但是,这是一个失败,因为数据不是作为字符串读取的
请在较大的文件上尝试此操作,并报告其性能:
这似乎有效
FromCharacterCode[ToCharacterCode[ReadList["raw.php.txt", Word]], "UTF-8"]
我得到的链接测试文件的计时是
FromCharacterCode[ToCharacterCode[ReadList["test.txt", Word]], "UTF-8"]); // Timing
(* ==> {0.000195, Null} *)
Import["test.txt", "Text"]; // Timing
(* ==> {0.01784, Null} *)
请链接到我可以用来测试的UTF-8编码文件好吗?我记得
ToCharacterCode
本机处理列表,所以我认为不需要Map
。这是否改善了其性能?:-)我该把答案给谁?;-)你的第一个版本也欺骗了我。我真的需要打开显示那些引号…谢谢!事实上,To/FromCharacterCode
是关键!(查看其他答案和我的时间编辑。)@Szabolcs和Heike,我没有看到这个答案,即使我发布了我的更新!我甚至迫不及待地刷新了页面,看看Szabolcs是否尝试过我的新答案。也许我就是那个瞎子,但这似乎是个小故障。很抱歉我踩到了脚趾。我一直在使用脚本拦截器(NoScript)。我敢打赌它一定是以某种方式干扰了页面更新。
FromCharacterCode[ToCharacterCode[ReadList["test.txt", Word]], "UTF-8"]); // Timing
(* ==> {0.000195, Null} *)
Import["test.txt", "Text"]; // Timing
(* ==> {0.01784, Null} *)