#ファイルから読み込んだデータに対して、正規表現を用いた置換を行い、それを出力したいのですがエラーが出てしまいます。
ファイル(test.txt)の中身は、以下のような複数行のものです。
test.txt
1(0562)04-0718 2020-072-0142 30690-06-0497
また、想定している出力は以下となります。
+81-562-04-0718 +81-20-072-0142 +81-690-06-0497
Python
1import re 2 3f = open("test.txt", 'r') 4 5phone = re.sub("((([0]{1})|([(][0]{1}))([0-9]{1,4})([-]|[(]|[)])([0-9]{1,4})([-]|[)])([0-9]{4}))","+81-\5-\7-\9",f); 6 7print(phone) 8f.close()
エラーは以下の通りです。
Traceback (most recent call last): File "kadai07a.py", line 6, in <module> number = re.sub("((([0]{1})|([(][0]{1}))([0-9]{1,4})([-]|[(]|[)])([0-9]{1,4})([-]|[)])([0-9]{4}))","+81-\5-\7-\9",f); File "C:\ProgramFiles\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\re.py", line 210, in sub return _compile(pattern, flags).sub(repl, string, count) TypeError: expected string or bytes-like object
また、コードを以下のような形に書き換えてみても同様のエラーが起きてしまいました。
python
1import re 2 3with open("test.txt", 'r') as f: 4 data=f.read() 5 6data = data.split("\n") 7 8phone = re.sub("((([0]{1})|([(][0]{1}))([0-9]{1,4})([-]|[(]|[)])([0-9]{1,4})([-]|[)])([0-9]{4}))","+81-\5-\7-\9",data); 9 10print(phone) 11f.close()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/20 16:58