替换已解析西班牙语推文中的子字符串时出现问题-R 2.15.3

替换已解析西班牙语推文中的子字符串时出现问题-R 2.15.3,r,twitter,xml-parsing,substring,gsub,R,Twitter,Xml Parsing,Substring,Gsub,下面是提取tweets的完整代码:loadrequired包 require(XML) 让我们看一些关于#18A hash tag define twitter搜索url的推文(遵循atom标准) 编码查询 query = URLencode("#18A") 用于存储结果的向量 tweets = character(0) 分页17次以获取推文 for (page in 1:17) { twitter_search = paste(twitter_url, "q=", query, "&am

下面是提取tweets的完整代码:loadrequired包

require(XML)
让我们看一些关于#18A hash tag define twitter搜索url的推文(遵循atom标准)

编码查询

query = URLencode("#18A")
用于存储结果的向量

tweets = character(0)
分页17次以获取推文

for (page in 1:17)
{
twitter_search = paste(twitter_url, "q=", query,
"&rpp=100&lang=es&pagegeocode=-34.686173,-58.648529,15mi", page, sep="")
tmp = xmlParseDoc(twitter_search, asText=F)
tweets = c(tweets, xpathSApply(tmp, "//s:entry/s:title",
                         xmlValue, namespaces=c('s'='http://www.w3.org/2005/Atom')))
}

print(tweets)
class(tweets)

Then, replacing the spanish characters (á, é, í,..) isn't working.

tweets = gsub("<U\\+00E1>", "a", tweets)
tweets = gsub("<U\\+00E9>", "e", tweets)
我通过将tweet的编码更改为:

Encoding(tweets) <- "ISO-8859"

# Replace spanish character with accent for "normal" character

tweets = gsub("\303\272", "u", tweets)
tweets = gsub("\303\241", "a", tweets)
tweets = gsub("\303\255", "i", tweets)
tweets = gsub("\303\263", "o", tweets)
tweets = gsub("\303\251", "e", tweets)
tweets = gsub("\303\271", "u", tweets)
tweets = gsub("\303\201", "O", tweets)
tweets = gsub("\303\211", "E", tweets)
tweets = gsub("\342\234\224", "", tweets)
tweets = gsub("\302\241", "", tweets)
tweets = gsub("\302\277", "", tweets)

编码(tweets)在正则表达式中,
+
符号具有特殊含义。您可以使用
fixed=TRUE
参数来
gsub
或转义特殊字符:

tweet = gsub("<U\\+00E9>", "e", tweet)
tweet = gsub("<U\\+00E1>", "a", tweet)
tweet = gsub("<U\\+00BF>", "" , tweet)


## [1] "RT @LuchoBugallo: Quieren una primicia? @CFKArgentina el #18A se va a      #Venezuela. Cual sera el motivo que la moviliza hacer un viaje d ..."
## [2] "RT @LuchoBugallo: #18A - Ya estan apareciendo las cuentas truchas de militontos, que usan s<U+00F3>lo en epoca de cacerolazos!"                 
tweet=gsub(“,”e“,tweet)
tweet=gsub(“,”a“,tweet)
tweet=gsub(“,”,tweet)
##[1]“RT@LuchoBugallo:Quieren una primicia?@CFKArgentina el#18A se va a#a委内瑞拉。这是一个充满活力的世界。”
##[2]“RT@LuchoBugallo:#18A-你是一名军事将领,你是一名军事将领!”

使用了选项
fixed=TRUE
,因为
+
可能正在使用正则表达式拧紧:

tweet = gsub("<U+00E9>", "e", tweet, fixed = T)
tweet = gsub("<U+00E1>", "a", tweet, fixed = T)
tweet = gsub("<U+00BF>", "" , tweet, fixed = T)
tweet=gsub(“,”e“,tweet,fixed=T)
tweet=gsub(“,”a“,tweet,固定=T)
tweet=gsub(“,”,tweet,fixed=T)

我想要彻底解决这个问题的答案是:只是改变R的语言。我用西班牙语写的,这就是推特编码问题的根源

解决方案就是在MacOSX终端上运行这段代码

默认写org.R-project.R force.LANG en_US.UTF-8

tweet = gsub("<U\\+00E9>", "e", tweet)
tweet = gsub("<U\\+00E1>", "a", tweet)
tweet = gsub("<U\\+00BF>", "" , tweet)


## [1] "RT @LuchoBugallo: Quieren una primicia? @CFKArgentina el #18A se va a      #Venezuela. Cual sera el motivo que la moviliza hacer un viaje d ..."
## [2] "RT @LuchoBugallo: #18A - Ya estan apareciendo las cuentas truchas de militontos, que usan s<U+00F3>lo en epoca de cacerolazos!"                 
tweet = gsub("<U+00E9>", "e", tweet, fixed = T)
tweet = gsub("<U+00E1>", "a", tweet, fixed = T)
tweet = gsub("<U+00BF>", "" , tweet, fixed = T)