

xlsxに含まれる「a-i－u」などの文字列から半角・全角ハイフンをなくすため置換を行いたいです。  
下記のように複数条件を入れるとエラーになってしまうのですが、複数条件でまとめて置換する方法はありますでしょうか。

[code]

    wb = openpyxl.load_workbook('book.xlsx')
    ws = wb.worksheets[0]
    
    if os.listdir('ファイルがあるフォルダー'):
        for i in range(ws.max_row):
            for row in ws.iter_rows():
                    for cell in row:
    　　　　　　　　　　　#6は置換したい文字列が存在する列
                        if cell.col_idx == 6:
    　　　　　　　　　　　　　#置換部分
                            text = cell.value.replace(["-","－"], "")
                            cell.value = text
    
[/code]

・エラーコード

[code]

    text = cell.value.replace(["-","－"], "")
    TypeError: replace() argument 1 must be str, not list
    
[/code]

置換箇所をtext2などで複数回に分けて処理することができるのであればその方法でも問題ありません。


CC BY-SA 4.0
2021-06-10T04:17:05.877
77454
2021-06-10T05:04:00.670
2021-06-10T05:04:00.670
3060
45216
question
python python3 openpyxl
OpenPyXL を使って xlsx ファイル中の文字列を複数条件でまとめて置換したい


置換(削除)する部分を`re`モジュールで行えば良いのでは？  
[Pythonで複数の文字列を削除したい ー
re.subを使う](https://qiita.com/kenTee/items/dcf63aa2895122bb3fd1#resub%E3%82%92%E4%BD%BF%E3%81%86)

`import re`しておけば、このように出来るでしょう。

[code]

    text = re.sub(r"[-－]", "", cell.value)
    cell.value = text
    
[/code]


CC BY-SA 4.0
2021-06-10T04:45:52.070
77457
2021-06-10T04:45:52.070
26370
77454
answer


[translate](https://docs.python.org/ja/3/library/stdtypes.html#str.translate)による一括置換方法もあります。  
参考: [Pythonで文字列を置換（replace, translate, re.sub,
re.subn）](https://note.nkmk.me/python-str-replace-translate-re-sub/)

[code]

    import openpyxl
    
    wb = openpyxl.load_workbook('Book1.xlsx')
    ws = wb.worksheets[0]
    hyphens = ["-", "－"]
    trans = str.maketrans({"-": "", "－": ""})
    
    for r in range(ws.max_row):
        #6は置換したい文字列が存在する列
        cell = ws.cell(row=r+1, column=6)
        if cell.value != None:
            #置換部分
            cell.value = cell.value.translate(trans)
    
    #上書き保存
    wb.save('Book1.xlsx')
    
[/code]


CC BY-SA 4.0
2021-06-10T04:50:01.730
77458
2021-06-10T04:50:01.730
9820
77454
answer