R语言 从字符串中删除ASCII控制字符

1zmg4dgp  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(122)

我有一个df,其中包含一个包含字符串值的列。其中一些字符串是字符和日期的组合,一些字符和数字的组合。在某些情况下,字符串将具有标点符号,例如“()”或“#”。在字符串中有这些类型的字符是完全可以的。这个df最终被写入excel文件。
我遇到的问题是,“STX”ASCII控制字符嵌入到其中一个字符串中,我似乎无法将其删除,这导致在数据写入Excel文件后打开Excel文件时出现问题。下面是该字符串的示例:
'值1/2:这个,那个,第三,随机STX值,随机2,值6'
我试过以下方法,但都没有成功:

str_replace_all(df$col, "[[:punct:]]", "")
iconv(df$col, "ASCII", 'UTF-8', sub = "")

字符串
有谁知道我怎么才能把它去掉吗?

dw1jzc5e

dw1jzc5e1#

你说你想从你的字符串中删除所有出现STX的字符。
你可以用一个简单的gsub command(它所做的就是搜索模式或固定字符串(取决于fixed参数值),并替换为替换模式或另一个固定字符串:

df$col = gsub("\x02", "", df$col, fixed=TRUE)

字符串
什么是\x02?它是一个string escape sequence,其中\x表示构造开始,接下来的两个字符被解释为十六进制数。
fixed=TRUE参数告诉R引擎将STX字符作为文字字符搜索,而不是作为正则表达式模式搜索,这通常会带来更好的性能,并避免其他与正则表达式相关的问题,当您所需要的只是用另一个文字文本替换文字文本时。

相关问题