[英]Remove special characters in R from .docx
我看過很多有關刪除R中特殊字符的文章(例如,這篇文章: 從R中的字符串中刪除所有特殊字符 ),但是沒有一種策略可以解決我的問題。
我有一個抄本,可通過qdap的read.transcript()閱讀。 當我閱讀文檔時,它使帶有特殊字符的行看起來像這樣:
If anyone knows how to simply change these special characters (i.e <e1><b8><9d> to e), again please feel free to update!
我努力了:
ATL1$X2 <- gsub("[^0-9A-Za-z///,.?()' ]", "", ATL1$X2)
If anyone knows how to simply change these special characters (i.e e1b89d to e), again please feel free to update
但這不會刪除特殊字符,還會刪除!!
我也嘗試過:
str_replace_all(ATL1$X2, "[^[:alnum:]]", " ")
If anyone knows how to simply change these special characters i e e1 b8 9d to e again please feel free to update
但這甚至更糟,並且刪除了所有標點符號,但仍然無法解決我的問題。
最后,我也嘗試過:
iconv(ATL1$X2, from = 'UTF-8', to = 'ASCII//TRANSLIT')
If anyone knows how to simply change these special characters (i.e <e1><b8><9d> to e), again please feel free to update!
但是這里也沒有任何改變。
在理想的世界中,輸出如下所示:
If anyone knows how to simply change these special characters (i.e e e e to e), again please feel free to update!
因此,特殊字符將按其“應”的含義讀入。 如果不可能做到這一點,那么老實說,只要刪除特殊字符(而不是其他字符,例如感嘆號),就可以了:
If anyone knows how to simply change these special characters (i.e to e), again please feel free to update!
謝謝!
有幾件事情使這變得困難:
qdap.transcript
試圖提供幫助。 至少您在此處顯示的內容與您的結果一致,它們不是特殊字符,而只是字面上的“ <e1> <b8> <9d>”。 因此,如果您嘗試刪除特殊字符,則gsub
高興地遵守,並刪除了“ <”和“>”,而單獨保留了“ e1”等。 為了解決你的問題,我想你想轉換回特殊字符,然后用stri_trans_general
從stringi
包。 我確定那里還有其他類似的功能,但這對我有用。 原來,轉換回特殊字符是困難的部分,但是我有一些有效的代碼:
library(stringi)
mystring <- 'If anyone knows how to simply change these special characters (i.e <e1><b8><9d> to e), again please feel free to update!'
pos <- gregexpr('(<[A-Fa-f0-9]{2}>)+', mystring)[[1]]
replace <- substring(mystring, pos, pos+attr(pos, 'match.length')-1)
replace <- sapply(replace, function(r) {
eval(parse(text=paste0('\'', gsub('>', '', gsub('<', '\\\\x', r)), '\'')))
})
for(i in seq_along(replace)) {
mystring <- sub('(<[A-Fa-f0-9]{2}>)+', replace[i], mystring)
}
mystring <- stri_trans_general(mystring, 'latin-ascii')
我們首先提取“ <”和“>”之間看起來像十六進制的所有內容,然后將它們轉換為文字“ \\ xe1 \\ xb8 \\ x9d”,然后要求R進行處理,然后用這些替換值替換舊值。
僅在最后一行,我們將特殊字符替換為(在此示例中)“ e”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.