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

Python相当于perl -pe?

发布时间:2020-12-16 23:44:29 所属栏目:Python 来源:网络整理
导读:我需要从一些文本文件中选出一些数字.我可以用grep选出我需要的行,但不知道如何从行中提取数字.一位同事向我展示了如何用perl的bash来做到这一点: cat results.txt | perl -pe 's/.+(d.d+).n/1 /' 但是,我通常用Python编写代码,而不是Perl.所以我的问
我需要从一些文本文件中选出一些数字.我可以用grep选出我需要的行,但不知道如何从行中提取数字.一位同事向我展示了如何用perl的bash来做到这一点:
cat results.txt | perl -pe 's/.+(d.d+).n/1 /'

但是,我通常用Python编写代码,而不是Perl.所以我的问题是,我可以用同样的方式使用Python吗?也就是说,我可以把一些东西从bash转到Python,然后直接得到stdout的结果?如果这是有道理的.或者Perl在这种情况下更方便?

解决方法

是的,你可以从命令行使用Python. python -c< stuff>将运行< stuff>作为Python代码.例:
python -c "import sys; print sys.path"

没有直接相当于Perl的-p选项(自动输入/输出逐行处理),但这主要是因为Python不使用与$相同的概念,而不是Perl所做的那些Python,所有输入和输出都是手动完成的(通过raw_input()/ input()和print / print()).

对于你的具体例子:

cat results.txt | python -c "import re,sys; print ''.join(re.sub(r'.+(d.d+).n',r'1 ',line) for line in sys.stdin)"

(显然有些更笨拙,可能最好只是写脚本来在实际的Python中进行.)

(编辑:李大同)

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

    推荐文章
      热点阅读