python - Python 能否像 sed、awk 和(甚至)perl 一样用作命令行过滤器?
问题描述
是否有 Python 习惯用法或 cmdline 标志使其能够处理类似于这些示例的文件或标准输入中的行(输入是 .csv 文件;您想要选择和操作特定列,可能是数字列,用于后两者):
awk -F',' '{print $1, $3, $1+$3}' foo.csv
perl -F',' -ane '{print $F[0], $F[2], $F[0]+$F[2]."\n"}' foo.csv
使用条件和正则表达式可以做很多聪明的事情,但我只是想说明基本思想。有没有办法在 Python 中做到这一点,而无需显式打开文件、分隔记录和字段?Python 中一些简明扼要的示例(如果可能的话)将非常有帮助:
python ??? foo.csv
...不要说得太细了:-)。
解决方案
与 awk 和 Perl 不同,Python 不提供打开参数中指定的文件并遍历文件中的行以快速单行的选项。
相反,您可以将输入文件的内容重定向到 Python 的标准输入,并像这样执行单行:
python -c 'for a, _, b in (map(int, l.split(",")) for l in __import__("sys").stdin): print(a, b, a + b)' < foo.csv
推荐阅读
- javascript - bash: C:Users/user/AppData/Roaming/npm/bin/firebase: 没有这样的文件或目录
- firebase - Firebase Firestore 嵌套地图存储大小计算
- ruby-on-rails - 如何将 jruby engine_version 与 rails 的 ruby 版本匹配
- node.js - NodeJS - 在移动 Android/iPhone 中打开和关闭 Tourch/手电筒
- windows - 如何在 Windows 中控制(虚拟)音频设备的输入流?
- c# - (又一个)附加属性绑定不起作用
- apache-spark-sql - 在数据块上使用自定义 FileFormat 时搜索 _delta_log 的奇怪请求
- git - 将 TFS 存储库迁移到 AzureDevOps 存储库 - 解决方案中缺少文件
- recaptcha - 多因素身份验证是否需要 google reCAPTCHA
- vhdl - 在 VHDL 中实现反转计数器