Sza*_*lcs 5 wolfram-mathematica
是否可以使用或仅ReadList使用ReadList[..., Word]ASCII 来读取UTF-8(或任何其他)编码的文本文件?如果它只是ASCII,是否可以"修复"已经读取的数据的编码具有良好的性能(即保留ReadList过度的性能优势Import)?
Import[..., CharacterEncoding -> "UTF8"]有效,但它比它慢了很多ReadList. $CharacterEncoding对...没有影响ReadList
要测试大输入的性能,请参阅此问题中的测试文件.
以下是大型文本文件的答案时间:
进口
In[2]:= Timing[
data = Import[file, "Text"];
]
Out[2]= {5.234, Null}
Run Code Online (Sandbox Code Playgroud)
海克
In[4]:= Timing[
data = ReadList[file, String];
FromCharacterCode[ToCharacterCode[data], "UTF8"];
]
Out[4]= {4.328, Null}
Run Code Online (Sandbox Code Playgroud)
巫师先生
In[5]:= Timing[
string = FromCharacterCode[BinaryReadList[file], "UTF-8"];
]
Out[5]= {2.281, Null}
Run Code Online (Sandbox Code Playgroud)
这似乎有效
FromCharacterCode[ToCharacterCode[ReadList["raw.php.txt", Word]], "UTF-8"]
Run Code Online (Sandbox Code Playgroud)
我得到的链接测试文件的时间是
FromCharacterCode[ToCharacterCode[ReadList["test.txt", Word]], "UTF-8"]); // Timing
(* ==> {0.000195, Null} *)
Import["test.txt", "Text"]; // Timing
(* ==> {0.01784, Null} *)
Run Code Online (Sandbox Code Playgroud)
如果我省略Word,这有效:
$CharacterEncoding = "UTF-8";
ReadList["UTF8.txt"]
Run Code Online (Sandbox Code Playgroud)
然而,这是失败的,因为数据不是作为字符串读取的。
FromCharacterCode[BinaryReadList["UTF8.txt"], "UTF-8"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |