我正在尝试使用restclient gem在200组(多页)中删除我最后的3200条推文。
在此过程中,我最终将以下几行添加到我的文件中:
</statuses>
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
为了做到这一点(因为XML解析需要折腾),在下载文件之后,我想要替换除第一个之外的所有上述字符串。 我正在尝试以下方法:
tweets_page = RestClient.get("#{GET_STATUSES_URL}&page=#{page_number}")
message = <<-MSG
</statuses>
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
MSG
unless page_number == 1
tweets_page.gsub!(message,"")
end
上面有什么问题?还有更好的方法吗?
答案 0 :(得分:0)
我相信一次下载整个群体并通过消息拆分响应的主体并将其添加到第一个条目会更快。 像这样的东西,不能尝试,所以考虑这只是一个想法。
tweets_page = RestClient.get("#{GET_STATUSES_URL}").body
tweets = tweets_page.split(message)
tweets_page = tweets[0]+message+tweets[1..-1]
你可以轻松地将它们分成200个像这样的组
如果您想在整个文本中使用gsub,可以使用以下
tweets_page = <<-MSG
first
</statuses>
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
second
</statuses>
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
rest
MSG
message = <<-MSG
</statuses>
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
MSG
new_str = tweets_page.gsub message do |match|
if defined? @first
""
else
@first = true
message
end
end
p new_str
给出
type=\"array\">\nrest\n"
"first\n</statuses>\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<statuses type=\"array\">\nsecond\nrest\n"