繁体   English   中英

在python中有类似“perl -pe”的选项吗?

[英]Are there anything similar to “perl -pe” option in python?

TL; DR我想知道Python中的选项是什么,它可能大致对应于Perl中的“-pe”选项。

我曾经使用PERL一段时间,但是现在,我已经转向PYTHON,因为它的简单性和简单性。 当我需要在shell提示符上进行简单的文本处理时,我使用了perl -pe选项。 以下是一个例子。

grep foo *.txt | perl -pe 's/foo/bar/g'

要在Python中做类似的事情,有人可以向我解释我如何做到这一点?

-pe是两个参数的组合, -p-e -e选项大致相当于Python的-c选项,它允许您指定在命令行上运行的代码。 没有Python等价的-p ,它有效地添加代码来在从标准输入读取的循环中运行传递的代码。 为此,您实际上必须在代码中编写相应的循环,以及从标准输入读取的代码。

Perl虽然是一种完全成熟的编程语言,但最初被认为是一种文本操作工具。

另一方面,Python一直是一种通用的编程语言。 它可以处理文本和文本的灵活性,与Java或C ++相比具有极大的灵活性,但是它将在其通用语法中完成,没有这些规则的例外,包括正则表达式的特殊语法,在没有其他指令的情况下成为一个程序本身。同样适用于打开,阅读和写入文件,给出他们的名字。

因此,您可以使用“python -c ...”从命令行运行Python脚本 - 但您的命令必须是完整的程序 - 包括开头,中间和结尾。

因此,对于在stdin中传递的几个文件中的简单正则表达式替换,您可以尝试以下方法:

grep foo *txt| python3 -c "import sys, re, os; [(open(filename + 'new', 'wt').write(re.sub ('foo', 'bar', open(filename).read())), os.rename(filename + "new", filename))for filename in sys.stdin]"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM