linux - 清理 CSV(工件和缺少间距)

标签 linux python-3.x csv

我的数据是这种形式。您可以看到第 3 列(如果从 0 开始则为第 2 列)在其值上升到下一个数量级时触及之前的列。以及最后一列中来自未记录的数据输入的工件。

17:10:39 2.039 26.84 4.6371E-9    -0.7$R200$O100
17:10:41 2.082 27.04 4.6334E-9    -0.4
17:10:43 1.980 26.97 4.6461E-9     0.3
17:10:45 2.031 26.87 4.6502E-9     1.0$R200
17:10:47 2.090 27.09 4.6296E-9     0.1
...
18:49:40 1.930226.34 2.8246E-5     7.1
18:49:42 2.031226.04 2.8264E-5     8.2

现在我通过添加“|”手动解决了这一切deliminator 而不是“”,并删除了一些工件,但这很痛苦。

因此,为了将来从同一台机器上获得更大的数据集,有没有关于如何用 python 编写脚本的提示,或者是否有任何基于 linux 的工具已经可以修复这个 csv/make一个新的固定 csv?

最佳答案

在 linux shell 中:

cut -c 1-14 data.csv > DataA
cut -c 15-49 data.csv > DataB
paste DataA DataB | tr -s " " "\t" > DataC
  1. 将 csv 分成两部分,交叉点是它们接触的地方,同样在第二部分中,我们切掉了添加的不需要的工件。
  2. 将它们粘贴在一起并更改制表符的分隔符,因为粘贴会添加制表符

现在以防万一我们想坚持使用“|”下一步可能是分隔符

cat DataC | tr -s "\t" "|" > DataFinal
rm DataA DataB DataC

但这纯粹是可选的

关于linux - 清理 CSV(工件和缺少间距),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662794/

相关文章:

c - sscanf 和字符串

linux - 从文件 shell 脚本中获取子字符串

linux - 如何使用whm/cpanel设置个人用户邮件发送限制

python - 我如何将 21 点牌组中的 'Ace' 定义为 11 或 1?

python - 在 Python 模块中使用部分构建 Sphinx autodoc 文档

带有标题到哈希表的 Powershell CSV

java - 使用 jOOQ 从 CSV 导入日期

C 代码 - 100% cpu utlilization 几微秒

python - TensorFlow 从源错误 ValueError : invalid literal for int() with base 10: '' during cuda path configuration? 构建

python - 我可以获得为我的每个账户运行的 AWS EC2 实例的列表吗?