【发布时间】:2018-06-08 17:30:50
【问题描述】:
我正在尝试找出导致我出现问题的字符串向量中的特殊字符。
一个特殊的例子是一个字符串,它看起来像是“-coliform”,这是我向量中的第一个条目。
但这不是它实际所说的,因为我得到以下信息:
>"-coliform" == vect[1]
[1] FALSE
显然“-”实际上不是正确的符号。这会导致问题,因为我需要从字符串中删除所有标点符号,但某些标点符号字符未被识别为标点符号。
如何确定我实际显示的是什么角色,以便我可以删除它?
我不确定这是否是编码问题。似乎该字符采用 UTF-8 格式,我通过以下操作找到了该字符:
>weird_char <- substr(vect[1], 1, 1)
>encoding(weird_char)
[1] "UTF-8"
编辑:根据其他用户的请求添加某事物给出的输出。
>dput(vect[1])
"–coliform"
为了澄清,还有其他特殊字符也未被识别为标点符号(尽管它们似乎是)。因此,更换破折号的所有实例不会解决问题。
【问题讨论】:
-
你能显示
dput(vect[1])的输出吗? -
如果你只想保留字母数字字符,你可以试试
x <- gsub("[^[:alnum:] ]", "", x) -
@CPak 添加了该输出。问题是,即使我能弄清楚那个字符是什么,向量中也有几千个条目,其中许多包含不寻常的字符。比如我也刚找到几个包含“‘’”的。
-
@ZmnakoAwrahman 它没有解决我的问题。如果您阅读了我的问题的主要部分,它会说“还有其他特殊字符也未被识别为标点符号(尽管它们似乎是)。所以替换破折号的所有实例不会解决问题。
-
@ZmnakoAwrahman 问题正文中已经有一个示例。
标签: r string character-encoding