regex example Rimuovere tutti i caratteri speciali da una stringa in R?




r regex token (3)

Come rimuovere tutti i caratteri speciali in una determinata stringa in R e sostituire ogni carattere speciale con lo spazio?

I caratteri speciali da rimuovere sono: [email protected]#$%^&*(){}_+:"<>?,./;'[]-=

regex [:punct:] sta per fare la metà del lavoro.

Domanda_2: Ma come rimuovere ad esempio questi personaggi dalle lingue straniere: â í ü Â á ą ę ś ć ?

Answer_2: Sostituisci [^[:alnum:]] con [^a-zA-Z0-9] in regex o regexpr :
regex[^a-zA-Z0-9]


Answer #1

Invece di usare espressioni regolari per rimuovere quei caratteri "pazzi", convertili in ASCII, che rimuoverà gli accenti, ma manterrà le lettere.

EDIT: come ricordato nei commenti, potrebbe essere necessario dichiarare la codifica iniziale della stringa originale, di solito sarà UTF-8

astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')

quale risulta in

[1] "Abcdeacoauu"

Answer #2

È necessario utilizzare espressioni regolari per identificare i caratteri indesiderati. Per il codice più facilmente leggibile, vuoi lo str_replace_all dal pacchetto stringr , sebbene gsub dalla base R funzioni altrettanto bene.

L'esatta espressione regolare dipende da ciò che stai cercando di fare. Puoi semplicemente rimuovere quei caratteri specifici che hai inserito nella domanda, ma è molto più facile rimuovere tutti i caratteri di punteggiatura.

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

(L'equivalente R di base è gsub("[[:punct:]]", " ", x) .)

Un'alternativa è di scambiare tutti i caratteri non alfanumerici.

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

Tieni presente che la definizione di ciò che costituisce una lettera o un numero o un segno di punteggiatura varia leggermente a seconda della locale, quindi potresti aver bisogno di sperimentare un po 'per ottenere esattamente ciò che desideri.


Answer #3

Converti i caratteri speciali in apostrofo,

Data  <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)

Sotto lo codice per rimuovere l'apostrofo extra

Data <- gsub("''","" , Data ,ignore.case = TRUE)

Usa la funzione gsub(..) per sostituire il carattere speciale con l'apostrofo





character