0

我正在尝试发出一个宁静的 API GET 请求并将结果输出到 csv 文件。我收到的回复似乎不是逗号分隔的,示例如下:

��“状态”“id”“语言”“创建时间”“更新时间”“IP 地址”“位置”“用户名”“获取变量”“推荐人”“保存次数”“加权分数”“完成时间”“邀请码”“邀请电子邮件”“邀请姓名”“收藏家”“收藏家:company_name”“首先,我们希望您... | 餐厅名称”

我在 CSV gem docs 上阅读了这行代码,它有效:

CSV.open("./File.csv", "wb") 做 |csv|

    csv << ["row","of","data"]
  end

但是,我需要将从 API 调用收到的实际响应放入 csv 文件。我试过这个,我知道这很糟糕,但我只是想让一些东西起作用:

列表 = [ ]

列表 << 请求正文

list.each do |x|
  CSV.open("./File.csv", "w") do |csv|
    csv << [x]
  end
end

以上将我的 File.csv 转换为文本编码文件,并在文件中的每个字符之间放置一个 # 符号。格式远非它所需要的。

有什么建议么?提前感谢您的帮助。

编辑-

这是 API Get 请求的完整原始 response.body:

��“状态”“id”“语言”“创建时间”“更新时间”“IP 地址”“位置”“用户名”“获取变量”“推荐人”“保存次数”“加权分数”“完成时间”“邀请码” “邀请电子邮件” “邀请姓名” “收藏家” “收藏家:company_name” “首先,我们想请您... | 餐厅名称” “首先,我们想请您... | 地址” “首先,我们希望您... | 星期几和访问日期” “首先,我们希望您... | 访问时间” “首先,我们希望您... | 主持人姓名” “首先,我们想要你... | 服务器名称”“以下各项... | 食品质量” “以下各项... | 食物选择” “以下各项... | 食品介绍” “以下各项... | 健康选项” “以下各项... | 总体” “请提供任何其他意见或想法...” “我们现在想知道... | 室内装饰” “我们现在想知道... | 外部装饰" "我们现在想知道... | 清洁度" "我们现在想知道... | 温度" "我们现在想知道... | 舒适的座椅" "我们现在想知道知道... | 整体环境" "请提供任何其他意见或想法..." "考虑所有因素,请选择回复..." "最后,我们想知道您是否有任何 ove..." "不完整" "19424002" "en" "2013/07/18 4:54:18 PM " "2013/07/18 4:54:27 PM" "173.227.104.54" "美国" "-services-marketing" "lang=en&_previewpage=7&TEST_DATA=&preview=1" "" "" "" "" "" ““ ““ ““ “地点” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ”” ””“”“完成”“19424356”“en”“2013/07/18 4:57:37 PM”“2013/07/18 4:58:16 PM”“173.227.104.54”“美国”“-services-市场营销" "TEST_DATA=" "http://fluidsurveys.com/account/surveys/228169/edit/" "" "12.0" "00:00:36" "" "" "" "" "位置" "" "" "" "" "" "" "非常不满意" "非常不满意" "非常不满意" "非常不满意"不满意“非常不满意”“非常不满意”“非常不满意”“非常不满意”“非常不满意”“非常不满意”“非常不满意”“非常满意”“不完整”“19424569”“zh”“ 2013 年 7 月 18 日下午 4:59:16""2013 年 7 月 18 日下午 4:59:47""173.227.104.54""美国""-services-marketing""TEST_DATA=""link""""11.0""00:00:27""""""""""location""""""""""""""非常不满意“非常不满意” “非常不满意” “非常不满意” “非常不满意” “” “非常不满意” “非常不满意” “非常不满意” “非常不满意” “非常不满意” “非常不满意” “”完成""19424722""en""2013/07/18 5:01:01 PM""2013/07/18 5:01:22 PM""173.227.104.54""美国" "-services-marketing" "TEST_DATA=" "http://fluidsurveys.com/account/surveys/228169/edit/“完成”“19426705”“en”“2013/07/18 5:20:33 PM”“2013/07/18 5:23:19 PM”“173.227.104.54”“美国”“”“code=q4wqr9z5vp ""link""""44.0""00:02:45""q4wqr9z5vp""jb@email.com""jan""""location""Donatos""123 location Way""7 月 18 日星期四""11 : 30 am” “Rufus” “Lars” “满意” “非常满意” “一般” “不满意” “满意” “披萨没有我想要的那么热。” “满意” “满意” “满意” “ 满意” “满意” “满意” “餐厅干净,光线充足。” “满意” “餐厅的噪音往往有点太大,可能会让用餐者感到不舒服。” “完成” “19426762” “ zh""2013/07/18 5:20:57 PM""2013/07/18 5:22:52 PM""173.227.104.54""美国""""code=qnzznmvts8""链接"""" 35.0""00:01:53""qnzznmvts8""js@email.com""jon""""位置""Chime Steaks""14 Chime Street""2013 年 4 月 2 日星期二""下午 4 点""先生. 奇默森“莎拉奇梅斯基” 600 University Place" "7.18.13" "11:30 am" "位置" "Jackay" "满意" "满意" "满意" "满意" "满意" "我真的很喜欢免费的食物。它的味道比我必须支付的食物好得多。:)" "满意" "满意" "满意" "满意" "满意" "满意" "好氛围!" "满意" "我真的很喜欢免费食物!" "完成" "19427047" "zh" "2013/07 /18 下午 5:22:41""2013/07/18 5:27:10 PM""173.227.104.54""美国""""code=fczvg3rbrm""链接""""36.0" “00:04:29”“fczvg3rbrm”“mam@email.com”“垫子”“”“位置”“Danatos”“昨天”“星期一”“时间之前”“位置”“妻子”“满意”“中立” “不满意” “非常不满意” “中立” “我只是不喜欢切成矩形的圆形披萨。这让我觉得它们在隐藏什么东西,并导致眼睛抽搐,需要 3 天才能离开。” “非常满意” “满意” “满意” “不满意” “不满意” “满意” “座位太硬。没有消音。地板很干净,东西掉下来可以吃掉” “ “” “位置” “Donatoa” “Vestavia” “Thursday” “12 pm” “Katie” “Gemr” “不满意” “不满意” “不满意” “不满意” “不满意” “这是多纳托的法语拼写吗?” “满意” “满意” “满意” “满意” “满意” “满意” “为顾客跳宝石舞可以改善环境。” “中性”“更多 Tazikis,更少 Donatos”“完成”“19548931”“en”“2013/07/19 6:11:47 PM”“2013/07/19 6:13:56 PM”“173.227.104.54” “美国” ”

4

1 回答 1

0

假设您希望 csv 文件的第一行写入..

require 'csv'
DOC = 'file.csv'

data = []
data = '"Status" "id" "Language" "Created At" "Updated At" "IP Address" "Location" "Username" "GET Variables" "Referrer" "Number of Saves" "Weighted Score" "Completion Time" "Invite Code" "Invite Email" "Invite Name" "Collector" "Collector: company_name" "First, we would like you ... | Restaurant Name"'
data = data.split('" "')

profile = []
profile[0] = data[0].delete('"')
profile[1] = data[1]
profile[2] = data[2]
profile[3] = data[3]
profile[4] = data[4]
profile[5] = data[5]
profile[6] = data[6]
profile[7] = data[7]
profile[8] = data[8]
profile[9] = data[9]
profile[10] = data[10]
profile[11] = data[11]
profile[12] = data[12]
profile[13] = data[13]
profile[14] = data[14]
profile[15] = data[15]
profile[16] = data[16]
profile[17] = data[17]
profile[18] = data[18]
profile[19] = data[19].delete('"')

CSV.open(DOC, "a") do |data|
data << profile
end

这段代码绝不是动态的。希望这足以作为打印到 csv 的示例。如果可以,请编辑您的问题并输入要转换为 csv 的“API GET 请求”的原始输出,我可以帮助您加载数据。

于 2013-07-24T16:35:13.787 回答