gpt4 book ai didi

ruby - 删除 Ruby 哈希值中的前导空格

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:37 25 4
gpt4 key购买 nike

我正在处理 Chris Pine 的《学习编程》一书中的一个示例问题,我在删除哈希值中的空格时遇到了问题。

我从一个包含姓名和生日信息的 txt 文件开始,如下所示:

Christopher Alexander,  Oct  4, 1936
Christopher Lambert,    Mar 29, 1957
Christopher Lee,        May 27, 1922
Christopher Lloyd,      Oct 22, 1938
Christopher Pine,       Aug  3, 1976

然后我遍历每一行,在第一个逗号处拆分,然后尝试遍历每个键、值以去除空白。

birth_dates = Hash.new {}

File.open 'birthdays.txt', 'r' do |f|
f.read.each_line do |line|
name, date = line.split(/,/, 2)
birth_dates[name] = date
birth_dates.each_key { |a| birth_dates[a].strip! }
end

但没有任何东西被剥离。

{"Christopher Alexander"=>"  Oct  4, 1936", "Christopher Lambert"=>"    Mar 29, 1957", "Christopher Lee"=>"        May 27, 1922", "Christopher Lloyd"=>"      Oct 22, 1938", "Christopher Pine"=>"       Aug  3, 1976", "Christopher Plummer"=>"    Dec 13, 1927", "Christopher Walken"=>"     Mar 31, 1943", "The King of Spain"=>"      Jan  5, 1938"}

我见过一些使用 .map 的数组解决方案 - 但这是我遇到的唯一哈希示例。知道为什么它可能对我不起作用吗?

更新:根据 sawa 的评论删除了多余的 chomp。

最佳答案

为了解析逗号分隔的文件,我像这样使用 CSV

def parse_birthdays(file='birthdays.txt', hash={})
CSV.foreach(file, :converters=> lambda {|f| f ? f.strip : nil}){|name, date, year|hash[name] = "#{year}-#{date.gsub(/ +/,'-')}" }
hash
end
parse_birthdays
# {"Christopher Alexander"=>"1936-Oct-4", "Christopher Lambert"=>"1957-Mar-29", "Christopher Lee"=>"1922-May-27", "Christopher Lloyd"=>"1938-Oct-22", "Christopher Pine"=>"1976-Aug-3"}

如果你需要真正的日期,你可以放弃 lambda

def parse_birthdays(file='birthdays.txt', hash={})
CSV.foreach(file){|name, date, year|hash[name] = Date.parse("#{year}-#{date}")}
hash
end
parse_birthdays
# {"Christopher Alexander"=>#<Date: 2014-10-04 ((2456935j,0s,0n),+0s,2299161j)>, "Christopher Lambert"=>#<Date: 2014-03-29 ((2456746j,0s,0n),+0s,2299161j)>, "Christopher Lee"=>#<Date: 2014-05-27 ((2456805j,0s,0n),+0s,2299161j)>, "Christopher Lloyd"=>#<Date: 2014-10-22 ((2456953j,0s,0n),+0s,2299161j)>, "Christopher Pine"=>#<Date: 2014-08-03 ((2456873j,0s,0n),+0s,2299161j)>}

关于ruby - 删除 Ruby 哈希值中的前导空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com