R语言 如何读取包含NUL字符的文本文件?

tktrz96b  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(315)

我有一个包含NUL字符的文件。
这个文件是由另一个我无法控制的程序生成的,但我必须阅读它才能得到一些关键信息。
不幸的是,readChar()截断了输出并显示以下警告:

In readChar("output.txt", 1e+05) :   
  truncating string with embedded nuls

这个问题有解决的办法吗?

wlzqhblo

wlzqhblo1#

按照惯例,文本文件 * 不能 * 包含不可打印字符(包括NUL)。如果文件包含这样的字符,它就不是文本文件--它是一个 binary 文件。
R strictly 1遵循这个约定,完全不允许使用NUL字符,你需要把数据当作二进制数据来读取和处理,这意味着使用readBinraw数据类型:

n = file.size(filename)
buffer = readBin(filename, 'raw', n = n)
# Unfortunately the above has a race condition, so check that the size hasn’t changed!
stopifnot(n == file.size(filename))

现在我们可以通过删除嵌入的零字节来修复缓冲区。这是假设UTF-x 或ASCII编码!其他编码可能嵌入了需要解释的零字节!

buffer = buffer[buffer != 0L]
text = rawToChar(buffer)

1也许太严格了......

相关问题