1. ホーム
  2. regex

[解決済み] Rで文字列からすべての特殊文字を取り除くには?

2022-05-30 16:50:57

質問

Rで文字列からすべての特殊文字を削除し、空白に置き換えるにはどうすればよいですか?

削除する特殊文字には、以下のようなものがあります。 ~!@#$%^&*(){}_+:"<>?,./;'[]-=

試しに regex[:punct:] というパターンがありますが、これは句読点のみを削除するものです。

質問2:また、外国語の文字を削除する方法として、: â í ü Â á ą ę ś ć ?

答え 使用する [^[:alnum:]] を削除するために ~!@#$%^&*(){}_+:"<>?,./;'[]-= を削除し [^a-zA-Z0-9] を削除するには â í ü Â á ą ę ś ćregex または regexpr という関数があります。

基本Rでの解答:

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" 
gsub("[[:punct:]]", "", x)  # no libraries needed

どのように解決するのですか?

あなたは 正規表現 を使って、不要な文字を特定する必要があります。 最も読みやすいコードにするために str_replace_all から stringr パッケージから、しかし gsub は同じように動作します。

正確な正規表現は、あなたが何をしようとしているかによります。 質問であげた特定の文字を削除すればいいのですが、すべての句読点を削除する方がはるかに簡単です。

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(基本的なRの等価物は gsub("[[:punct:]]", " ", x) .)

別の方法として、英数字以外の文字をすべて入れ替えることもできます。

str_replace_all(x, "[^[:alnum:]]", " ")

文字や数字、句読点を構成するものの定義は、ロケールによって若干異なるので、正確に望むものを得るには少し実験する必要があるかもしれないことに注意してください。