teratail header banner
teratail header banner
質問するログイン新規登録
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

1084閲覧

python replace関数を使用して(株)を株式会社に置き換えを行いたい

py-

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/02/28 04:07

0

0

pythonのreplace関数を使用して(株)を株式会社へ置き換えを進めています。

問題点及び実施したい事

1 (株) → 株式会社  変更可能です
2 (株)aaa → 株式会社aaa 変更が出来ない

実際のファイル読み込み後の状況は、2になっています。
(株)の後ろにつく会社名が全て違うため(上記のaaa)、あいまいな認識方法が必要なのかと
思っていますが、いい方法が浮かびません。
そもそも、replace関数より別の方法があるのかと考えていますが
現在、試案中です。
よりより方法がありましたら、御教授願います。

検証したpyコード
t1 = t1.replace('(株),'株式会社’)
t1 = t1.replace('(株)','株式会社')

replace以外は、検証中です

python 3.6.3使用中です

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

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

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

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

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

fuzzball

2018/02/28 04:34

「t1 = t1.replace('(株),'株式会社’)」は、シングルクォーテーションが閉じていないとか、全角になっているとか、それでエラーになっているだけではないのでしょうか?
py-

2018/02/28 05:53

fuzzballさん ご連絡遅れて申し訳ありません。ご指摘の件は、下名の記載ミスです。今後は注意して進めさせて頂きます。質問の件に関しては皆様よりご教授頂きました。今後ご質問等お願いさせて頂く案件も発生するかもしれませんが宜しくお願い致します。
fuzzball

2018/02/28 05:57

root_jpさんの回答にもありますが、ただの記載ミスなのであれば t1 = t1.replace('(株)', '株式会社') で期待通りの結果になると思うのですが?
py-

2018/02/28 06:10

下名もこの件、確認をさせて頂き、記載させて頂きました内容では変換がされませんでした。can110さんよりご教授頂きました完全一致判定が発生していると思われます。下名も勉強不足と確認不足のため皆様に質問をさせて頂く前にpyコード等に不備がありご迷惑おかけしております。今後はきおつけてご質問させて頂きます。
fuzzball

2018/02/28 06:21

あー、やっと分かりました。t1が文字列じゃないんですね。長々と失礼しました。
guest

回答3

0

ベストアンサー

t1が列(Series)を指しているならばPandasSeries.str.replaceを使ってください。
ちなみにt1.replace('(株)','株式会社')だとpandas.Series.replaceが呼ばれstrである「(株)」との完全一致で判定されるので「(株)aaa」が置換されません。

str: string exactly matching to_replace will be replaced with value

Python

1import pandas as pd 2df = pd.DataFrame({'col1':['(株)','(株)aaa', '株式会社']}) 3df['col1'] = df['col1'].str.replace('(株)','株式会社') 4#df['col1'] = df['col1'].replace('(株)','株式会社',regex=True) # こちらでも可。regex=Trueを指定。 5print(df)

投稿2018/02/28 04:30

編集2018/02/28 04:48
can110

総合スコア38352

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

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

py-

2018/02/28 05:40

can110さん 御教授ありがとうございました。 str.replaceの件、勉強になりました。 再度、py構文の勉強をしなおします。 ありがとうございました。
root_jp

2018/02/28 08:06

すごい。見る人が見ればt1が文字列ではないと、すぐに予測がたつのですね。 勉強になります。
can110

2018/02/28 08:24

いえいえ、単に前回の質問の続きだと推測したからです^^; ただpandas.Series.str.replaceとpandas.Series.replaceの動作の違いはヘルプ見て初めて知りました。 ちょっとハマりどころですね。
guest

0

REPLで試してみましたが、

Python

1>>> "(株)aaa".replace("(株)","株式会社") 2'株式会社aaa'

となりました。

記載されている t1.replace('(株),'株式会社’) の部分で(株)を囲む
シングルクォーテーションが閉じられてませんけど、ただの脱字でしょうか。

投稿2018/02/28 04:38

root_jp

総合スコア4666

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

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

py-

2018/02/28 05:15

root_jpさん 御教授ありがとうございます。 ご指摘の件、下名の脱字です。 次回より、注意して実施します。 replaceの使用方法を再度勉強しなおします。 ありがとうございました。
guest

0

今てもとにpythonがないので確認できないのですが、以下のような方法ではどうでしょうか。

python

1import re 2 3src = ' (株)aaa' 4dst = re.sub(r'[((]株[))]', '株式会社', src) # 全角のカッコと半角のカッコ両方をチェック

投稿2018/02/28 04:30

KojiDoi

総合スコア13727

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

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

py-

2018/02/28 05:34

kojiDoiさん 御教授ありがとうございます。 reの考え方もあるのですね。 これより、実行させて頂きます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問