【问题标题】:How to remove the following unicode from a string in r? [closed]如何从r中的字符串中删除以下unicode? [关闭]
【发布时间】:2018-12-10 03:07:48
【问题描述】:

我有以下字符串7007756484480000000<U+2660>75,648,448
我想删除 7007756484480000000<U+2660> 和逗号
我一直在尝试其他人在这里展示的许多不同的方式,但我没有得到它。如果有人可以提供帮助,将不胜感激。

【问题讨论】:

  • 发布的问题似乎根本没有包含any attempt 来解决问题。 StackOverflow 期待您 try to solve your own problem first,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试过的内容,以说明您遇到minimal reproducible example 的特定障碍。欲了解更多信息,请参阅How to Ask 并拨打tour
  • 好吧,这就是问题所在。这 not 是 R 字符串中的 Unicode 字符。因此,学习如何删除“真正的”R Unicode 字符将无济于事。您应该发布dput(x) 的输出,其中 x 是 R 对象的名称。
  • 打孔重新打开以将其从审核队列中删除。这不是一个公平的审计问题。

标签: r regex


【解决方案1】:

表达一个明确的问题可能存在语言障碍,但如果我正在阅读请求,它是从该字符串中删除“7007756484480000000”和“,”。正则表达式函数gsub 的第一个参数(pattern)在写入模式字符串"|" 时将接受逻辑或,因此我们可以用"" 替换任何此类实例:

> x <- "700775648448000000075,648,448"
> gsub("7007756484480000000|,","",x)
[1] "75648448"

对于修改后的问题(如果这确实是字符串在 R 中显示时的样子),您可以删除直角括号和逗号之前的所有内容:

gsub("(^.+>)|,",   # match either a comma or (everything from start to the ">")
      "",          # replace with empty string
      "7007756484480000000<U+2660>75,648,448")   # the input

一个真正的 Unicode 字符应该是这样的:

 z <- "\U2660"
 nchar(z)
#[1] 1
# whereas you just have ordinary characters
 z <- "<U+2660>"
 nchar(z)
#[1] 8

如果它是 R 字符向量中的“真实”Unicode 字符,它可以通过以下两种方式之一被删除,使用字符类机制或使用必要的双(在本例中为三重反斜杠)必要的,因为 R 和 PCRE 共享一个转义字符(“|”):

z <- "\U2660"
z
#[1] "♠"
gsub("\\U2660","",z)
#[1] "♠"
gsub("\\U2660","",z)
#[1] "♠"

#Method 1
gsub("[\U2660]","",z)
#[1] ""

#Method 2
 gsub("\\\U2660","",z)
#[1] ""

【讨论】:

  • 对不起。我刚来这地方。我已经解决了这个问题。仍然非常感谢您的回答!
  • 非常感谢!我真的很感激!
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2021-12-25
  • 2020-03-01
  • 2017-02-20
相关资源
最近更新 更多