寻找关于如何在R字符向量列表中用直撇号替换卷曲撇号的一些指导。
我替换卷括号的原因 - 稍后在脚本中,我检查每个列表项,看看它是否在字典中找到(使用qdapDictionary)以确保它是真实的字而不是垃圾。字典使用直撇号,因此带有撇号的单词被拒绝。"
我目前遵循的代码示例。在我的测试列表中,项目#6包含一个卷曲的撇号,而项目#2有一个直的撇号。
示例:
list_TestWords <- as.list(c("this", "isn't", "ideal", "but", "we", "can’t", "fix", "it"))
func_ReplaceTypographicApostrophes <- function(x) {
gsub("’", "'", x, ignore.case = TRUE)
}
list_TestWords_Fixed <- lapply(list_TestWords, func_ReplaceTypographicApostrophes)
结果:没有变化。第6项仍然使用卷曲撇号。见下面的输出。
list_TestWords_Fixed
[[1]]
[1] "this"
[[2]]
[1] "isn't"
[[3]]
[1] "ideal"
[[4]]
[1] "but"
[[5]]
[1] "we"
[[6]]
[1] "can’t"
[[7]]
[1] "fix"
[[8]]
[1] "it"
非常感谢您提供的任何帮助!
答案 0 :(得分:1)
我在调用gsub
时发现了一个问题:
gsub("/’", "/'", x, ignore.case = TRUE)
您使用正斜杠在大写单引号前面加上前缀。我不知道你为什么要这样做。我可以推测你试图逃避引号字符,但这有副作用,你的模式现在试图匹配正斜杠后跟引号。由于这在您的文本中从未发生过,因此不会进行任何替换。你应该这样做:
gsub("’", "'", x, ignore.case = TRUE)
点击以下链接进行演示,该演示显示使用上述gsub
来电可以按预期工作。
答案 1 :(得分:1)
您可能正在Windows上遇到bug in R。尝试在输入中使用utf8::as_utf8
。或者,这也有效:
library(utf8)
list_TestWords <- as.list(c("this", "isn't", "ideal", "but", "we", "can’t", "fix", "it"))
lapply(list_TestWords, utf8_normalize, map_quote = TRUE)
这将用ASCII撇号替换以下字符:
U+055A ARMENIAN APOSTROPHE
U+2018 LEFT SINGLE QUOTATION MARK
U+2019 RIGHT SINGLE QUOTATION MARK
U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
U+FF07 FULLWIDTH APOSTROPHE
它还会将您的文本转换为合成的普通形式(NFC)。
答案 2 :(得分:0)
即将说同样的话。
尝试使用stringr
包中的void slowlogPushEntryIfNeeded(client *c, robj **argv, int argc, long long duration);
,不需要使用斜杠
答案 3 :(得分:0)
这可能有效:gsub("[\u2018\u2019\u201A\u201B\u2032\u2035]", "'", x)
答案 4 :(得分:0)
我正面临类似的问题。不知何故,这些解决方案都不适合我。因此,我设计了一种间接方式来实现此目的,即识别撇号并将其替换为所需的格式。
gsub("(\\w)(\\W)(\\w\\s)", "\\1'\\3","sid’s bicycle")
[1] "sid's bicycle"
希望它可以帮助某人。