r - 在 R 中将 ASCII 规范化为 UTF-8
问题描述
我有一个数据框,我正在尝试将其转换为 rdf 以在 Protege 中进行编辑。不幸的是,数据框具有在打印字符串时不可见的 ASCII 代码,最臭名昭著的是\u0020
,它为空格编码。
x <- "\u0020".
x
> " "
grepl()
搜索模式时工作正常,但在打印结果时不返回原始字符串。
match <-
grep(pattern = "\u0020", x = x, value = TRUE)
match
> " "
问题是这些代码正在抛弃 Protege,我正在尝试将它们规范化为基本字符,例如\u0020
to " "
,但我找不到任何可以捕获这些并用单个非代码字符替换它们的正则表达式。正则表达式模式[^ -~]
不会捕获这些值,否则我对这些字符串完全视而不见。如何在 R 中规范化这些代码中的任何一个?
解决方案
就个人而言,我只会使用stringi
库替换文件中的所有 unicode。
给定一个 CSV 文件,test.csv
看起来像
col1,col2,col3
\u0020, moretext, evenmoretext
首先将其加载为 data.frame
> frame <- read.csv("test.txt", encoding="UTF-8")
> frame
col1 col2 col3
1 \\u0020 moretext evenmoretext
接下来,找到您想要替换的所有匹配项,并使用stri_unescape_unicode
它来将其变成 Protege 喜欢的东西。
> frame$col1
[1] "\\u0020"
frame$col1 <- stri_unescape_unicode(frame$col1)
> frame$col1
[1] " "
替换后,您应该能够在没有 unicode 条目的情况下将 csv 写回磁盘。
推荐阅读
- angular - 无法使用Angular获取剑道多选框的单个选定项值
- c# - 父中继器项的 ASP.NET 索引(在嵌套中继器中)
- c# - PDU模式下,如何将分片的长短信识别拼接成完整的短信?
- python - Python 2 层记分板?
- css - 我的移动导航没有出现在 Iphone 上,但可以在其他设备上使用
- javascript - 删除标记 - 谷歌地图 - JavaScript
- c++ - 代码在 Visual Studio 2017 中不起作用,但在 VS 代码中起作用
- javascript - Angular 6:将选择框值的选定值传递给ngSubmit上的组件
- java - 在 Java 中使用 google or-tools 进行除法不等式约束
- firebase - Flutter 如何在 FutureBuilder 中更新 ListView