加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中对csv列进行排序,将bash输出读入python变量

发布时间:2020-12-15 22:21:01 所属栏目:安全 来源:网络整理
导读:嗨,我在多个csv文件中有大量数据,并使用grep过滤掉数据集: user@machine:~/$cat data.csv | grep -a "63[789]...;"637.05;1450.2637.32;1448.7637.60;1447.7637.87;1451.5638.14;1454.2638.41;1448.6638.69;1445.8638.96;1440.0639.23;1431.9639.50;1428.8
嗨,我在多个csv文件中有大量数据,并使用grep过滤掉数据集:

user@machine:~/$cat data.csv | grep -a "63[789]...;"
637.05;1450.2
637.32;1448.7
637.60;1447.7
637.87;1451.5
638.14;1454.2
638.41;1448.6
638.69;1445.8
638.96;1440.0
639.23;1431.9
639.50;1428.8
639.77;1427.3

我想弄清楚具有最高计数的数据集,右边的列;然后知道相应的值(左边的;).在这种情况下,我正在寻找的集合将是638.14; 1454.2

我尝试了不同的东西,结果使用了bash和python的组合,这有效,但不是很漂亮:

os.system('ls | grep csv > filelist')
files = open("filelist")
files = files.read()
files = files.split("n")

for filename in files[0:-1]:
  os.system('cat ' + filename + ' | grep -a "63[6789]...;" > filtered.csv')
  filtered = csv.reader(open('filtered.csv'),delimiter=';')
  sortedlist = sorted(filtered_file,key=operator.itemgetter(1),reverse=True)
  dataset = sortedlist[0][0] + ';' + sortedlist[0][1] + 'n'

我希望有一个bash唯一的解决方案(剪切,awk,数组?!?),但无法弄明白.另外,我不喜欢将bash命令写入文件然后将它们读入python变量的工作.我可以直接将它们读入变量,还是有更好的解决方案来解决这个问题? (可能是perl等…但我真的对bash解决方案很感兴趣..)

非常感谢你!!

解决方法

如果您要使用Python,那么使用Python.为什么要将bash命令混合在一起?它使您的代码不可移植/依赖于bash环境.

import os
import glob
import operator
os.chdir("/mypath")
for file in glob.glob("*.csv"):
    data=open(file).readlines()
    data=[i.strip().split(";") for i in data if i[:3] in ["637","638","639"]]
    # data=[i.strip().split(";") for i in data if i[:3] in ["637","639"] and isinstance(float(i[:6]),float) ]
    sortedlist = sorted(data,reverse=True)
    print "Highest for file %s: %s" % (file,sortedlist[0])

或者,如果您对bash工具解决方案更感兴趣

find . -type f -name '*.csv' |while read -r FILE
do
 grep -a "63[789]...;" "$FILE" | sort -n -r -t ';' -k 2 | head -1  >> output.txt
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读