Convert Python bytes to an R character or raw vector — as.character.python.builtin.bytes (original) (raw)
Convert Python bytes to an R character or raw vector
# S3 method for class 'python.builtin.bytes'
as.character(
x,
encoding = "utf-8",
errors = "strict",
nul = stop("Embedded NUL in string."),
...
)
# S3 method for class 'python.builtin.bytes'
as.raw(x)
Arguments
object to be coerced or tested.
Encoding to use for conversion (defaults to utf-8)
Policy for handling conversion errors. Default is 'strict' which raises an error. Other possible values are 'ignore' and 'replace'.
Action to take if the bytes contain an embedded NUL (\x00
). Python allows embedded NUL
s in strings, while R does not. There are four options for handling embedded NUL
s:
- Error: This is the default
- Replace: Supply a replacement string:
nul = "<NUL>"
- Remove: Supply an empty string:
nul = ""
- Split: Supply an R
NULL
to indicate that string should be split at embeddedNUL
bytes:nul = NULL
further arguments passed to or from other methods.
See also
Examples
if (FALSE) { # reticulate::py_available()
# A bytes object with embedded NULs
b <- import_builtins(convert = FALSE)$bytes(
as.raw(c(0x61, 0x20, 0x62, 0x00, 0x63, 0x20, 0x64)) # "a b<NUL>c d"
)
try(as.character(b)) # Error : Embedded NUL in string.
as.character(b, nul = "<NUL>") # Replace: "a b<NUL>c d"
as.character(b, nul = "") # Remove: "a bc d"
as.character(b, nul = NULL) # Split: "a b" "c d"
}