微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python相当于perl -pe?

我需要从一些文本文件中选出一些数字.我可以用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中进行.)

原文地址:https://www.jb51.cc/python/185568.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐