簡體   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