質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3919閲覧

完全一致の置換をしたい

emiime

総合スコア27

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/30 11:30

####テキストファイルに含まれている"AAA"のみのという文字列を"B"に置換したいです。
####ただ、"AAAAAA"や"CAAA"はそのままにしたいのですが、どうすれば良いかわからず教えていただきたいです!

以下のコードを描きましたが、これだと"AAAAAA"や"CAAA"も"B"と置換されてしまいます。
ちなみにpythonでなくてもエディタの置換機能でもあれば教えていただきたいです!
パソコンはmac,エディタはmiとpycharmを持っています!
よろしくお願い致します!

python

1file_name="path" 2with open(file_name) as f: 3 data_lines = f.read() 4data_lines = data_lines.replace("AAA", "B") 5with open(filename, mode="w") as f: 6 f.write(data_lines) 7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2020/04/30 12:22

CAAA は置換したくないということですが、では、どのようなAAAが置換対象ですか? 前後が空白/改行で挟まれているとか?
emiime

2020/04/30 12:53

AAAだけの行です!テキストファイルの内容が CAAAA AAA BAA となっているような感じです。
guest

回答2

0

ベストアンサー

先の回答の方とのやりとりでは違う方向に行っているようですが、質問の答えの通り

AAAだけの行です!テキストファイルの内容が

CAAAA
AAA
BAA
となっているような感じです。

であるとすると、 「AAAだけの行」を表わす正規表現で特定できます。
※ re をインポートしておく必要があります。

python

1data_lines = re.sub(r'^AAA$', 'B', data_lines, count=0, flags=re.MULTILINE)

「^」が行の始まり、「$」が行の終りを表わすので、「^AAA$」で「AAAだけの行」を表わすことができます。

ただ、条件が変ってしまうようであれば、意味がないかもしれませんが...

投稿2020/04/30 15:03

TakaiY

総合スコア13788

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「前後が英数字でない」という意味なら、正規表現にして\bで囲んで、

Python

1import re 2data_lines = re.sub(r"\bAAA\b","B",data_lines)

です。

投稿2020/04/30 11:52

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

emiime

2020/04/30 13:12

「前後が_(アンダーバー)でない」という意味だとどうすれば良いか教えていただけたら幸いです。すみません!
emiime

2020/04/30 13:21

27\t._\t_\t_\t_\t_ \t_ 12\t_\t_\t_\t_\t_ このテキストファイルの2行目の「\t_」だけを消去したいです!
otn

2020/04/30 13:27

> 「\t_」だけ 後ろがアンダーバーですが?
emiime

2020/04/30 13:29

そうです!
otn

2020/04/30 13:30

では「前後が_(アンダーバー)でない」に該当しないので、削除しないと言うことですね。
emiime

2020/04/30 13:32

何度も申し訳ございません。 「前後が_(アンダーバー)でない」は訂正 「\t_」の行だけ全て空白にしたいという意味です。
otn

2020/04/30 13:44

では、"\t_" を "" に置換すれば良いです。
emiime

2020/04/30 13:48

ただ他の行にも\t_が含まれているため(例えば:「27\t_\t_\t_\t_\t_」) "\t_" を "" に置換するとこちらまで変換されてしまいます。。
otn

2020/04/30 13:51

該当する条件をちゃんと書いてください。
otn

2020/04/30 14:40

前後が改行の\t_だけの行であれば、 re.sub(r"^\t_$","",data_lines,0,re.M) ですね。
emiime

2020/05/02 06:54

ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問