[英]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.