ruby - 从 tsv 文件中过滤唯一值
问题描述
我有一个包含四列的 tsv 文件。我很难隔离文件的第一列(UUID),所以我可以从每个元素中去掉“UUID=”,并从唯一值中过滤。
我在我的代码中做错了什么?我一直很想弄清楚这一点。先感谢您!
这是文件的链接,下面是我的代码。
https://drive.google.com/file/d/1mGaK3n3YCrzrwOgSo5QQZ62FXDKJ3nZ8/view?usp=sharing
require "csv"
log_file = CSV.foreach("output_file.tsv",{:col_sep => "\t", :headers => true}) do |row|
uuid = row["UUID"]
ip = row["IP"]
time = row["TIME"]
ua = row["UA"]
uuid = uuid.drop(1)
ip = ip.drop(1)
time = time.drop(1)
ua = ua.drop(1)
uuid = uuid.map { |element|
element = element[5..-1]}
unique_logins = uuid.uniq
puts uuid.uniq.length
解决方案
可能你有点困惑,认为它CSV.foreach
读取了整列,但它实际上是逐行读取你的文件。这就是为什么不需要drop(1)
。
这是最小的代码,它从文件中收集 uuid 并打印这些 uuid 的数量,然后打印唯一 uuid 的数量
require "csv"
uuids = []
log_file = CSV.foreach("output_file.tsv",{:col_sep => "\t", :headers => true}) do |row|
uuids << row["UUID"]
end
uuids = uuids.map { |element| element = element[5..-1]}
p uuids.length
unique_logins = uuids.uniq
p unique_logins.length
推荐阅读
- php - mysqli结果和while循环的array_diff()问题
- c# - 使用 Yahoo Weather API 时出现未经授权的访问异常
- android - android 片段不是相当于 Asp.Net Core MVC 中的 Partial View 吗?
- mysql - Laravel 使用查询构建器连接和分页,没有重复的行
- angular - 如何应用角度数据表?
- mysql - 带减法的 SQL 数据透视表
- android - 更新 runOnUiThread 中的 textview 文本与之前设置的文本重叠
- python - 如何从盈透证券 API 获取合约详情?
- oracle - “semmni”设置正确。(更多细节) 预期值:128 实际值:0
- python-3.x - 如何在线使用 Python GUI?