我猜 row["sex"] 也没有吧。。
#1 楼 @twm 其他都有
保持关注
看看 row.keys
row.keys
#4 楼 @Kabie 没问题呢
那么 row[row.keys[0]] ?
row[row.keys[0]]
能贴出来完整的代码吗?
#6 楼 @Kabie 这个有的
那么显然 row.keys[0] 不是 "name" ……
row.keys[0]
"name"
#6 楼 @Kabie
#9 楼 @Kabie 可他偏偏就是 name
#11 楼 @dothide 那只是显示的是 name 吧……不信你 === 看看……
name
===
有趣,关注
大概是带了隐藏字符,看看 rows.keys.first.chars.to_a 吧。
rows.keys.first.chars.to_a
一个可能是因为表格数据加了 BOM
data = Hash.[] CSV.parse("\xEF\xBB\xBFname\nfoo").transpose # => {"name"=>"foo"} data['name'] # => nil
为什么会加 BOM 呢?大概是因为要让 excel 能打开 utf-8 编码文件 http://ruby-china.org/topics/16376 ...
#14 楼 @luikore 恩 看到了 是由隐藏字符,但是却是个空字符
有意思
#14 楼 @luikore 居然还能这样。。
#15 楼 @dothide 是无 glyph 的字符,你可以看它的 code point: row.keys[0].chars.map &:ord 或者看二进制 inspect: row.keys[0].force_encoding 'binary'
row.keys[0].chars.map &:ord
row.keys[0].force_encoding 'binary'
#18 楼 @luikore 解决了,我把原来的 csv 文件格式转为无 BOM 编码格式再重新导入即可
#14 楼 @luikore p rows.keys.first.b 应该也能看到吧?