2

Python を (Linux ターミナル経由で) 使用して、テキスト ファイルの次の行にある「例」という単語を置き換えようとしていますtext_file.txt

abcdefgh example uvwxyz

私が欲しいのは:

abcdefgh replaced_example uvwxyz

Python のワンライナーでこれを行うことはできますか?

編集: 私はperlのワンライナーを持っperl -p -i -e 's#example#replaced_example#' text_file.txtていますが、Pythonでもやりたいです

4

2 に答える 2

11

あなたはそれを行うことができます:

python -c 'print open("text_file.txt").read().replace("example","replaced_example")'

しかし、それはかなり不格好です。Python の構文は、適切な 1 ライナーを作成するようには設計されていません (ただし、多くの場合、そのように機能します)。Python は何よりも明快さを重視します。これが、Python が提供する真の強力なツールを取得するために何かをインポートする必要がある理由の 1 つです。Python の機能を実際に活用するには、何かをインポートする必要があるため、コマンドラインから単純なスクリプトを作成するのには向いていません。

私はむしろ、この種のことのために設計されたツールを使用したいと思います-例えばsed

sed -e 's/example/replace_example/g' text_file.txt
于 2012-10-17T18:57:16.400 に答える
2

ちなみに、fileinputモジュールはsed-iと同じようにインプレース変更をサポートしています

-bash-3.2$ python -c '
import fileinput
for line in fileinput.input("text_file.txt", inplace=True):
    print line.replace("example","replace_example"),
'
于 2012-10-17T19:12:48.053 に答える