r语言 - 如何从字符串中删除 unicode <U+00A6>?



我有一个字符串,比如:

q <-"<U+00A6>  1000-66329"

我想删除<U+00A6>,只获取1000 66329

我尝试使用:

gsub("u00a6"," ", q,perl=T)

但它并没有消除任何东西。我应该如何执行gsub才能只获得1000 66329

我只想删除字符串开头的unicode <U+00A6>

那么你不需要gsub,你可以使用sub"^\s*<U\+\w+>\s*"模式:

q <-"<U+00A6>  1000-66329"
sub("^\s*<U\+\w+>\s*", "", q)

图案详细信息

  • ^-字符串的开头
  • \s*-零个或多个空白
  • <U\+-一个文字字符序列<U+
  • \w+-1个或多个字母、数字或下划线
  • >-文字>
  • \s*-零个或多个空白

如果您还需要用空格替换-,请添加|-替代项并使用gsub(因为现在我们预计会有几个替换项,并且替换项必须是空格-这与akrun的答案相同(:

trimws(gsub("^\s*<U\+\w+>|-", " ", q))

请参阅R在线演示

如果始终是第一个字符,您可以尝试:

substring("U00A6 1000-66B29", 2)

如果R将字符串打印为<U+00A6> 1000-66329而不是¦ 1000-66B29,则<U+00A6>被解释为字符串"<U+00A6>"而不是unicode字符。然后你可以做:

substring("<U+00A6>  1000-66329",9)

两种方式的结果都是:

[1] "  1000-66329"

我们也可以进行

trimws(gsub("\S+\s+|-", " ", q))
#[1] "1000 66329"

与其删除,不如将其转换为适当的格式。。。您必须将本地设置为UTF-8,如下所示:

Sys.setlocale("LC_CTYPE", "en_US.UTF-8")

也许你会看到以下消息:

Warning message:
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") :
  OS reports request to set locale to "en_US.UTF-8" cannot be honored

在这种情况下,您应该使用stringi::stri_trans_general(x, "zh")

这里"zh"的意思是"中国人"。你应该知道你必须转换成哪种语言。这就是

相关内容

  • 没有找到相关文章

最新更新