私はパーソナルプロジェクト(本書のプロジェクト1の専門版をPythonで自動化しますが、具体的には 携帯電話番号 (+91または91)はオプションですが、かっこで囲まれていない可能性があります。 の後にオプションのスペース(\ s)を付けてもかまいませんか? (\ d \ d \ d)? 3桁の市外局番(\ d \ d \ d)?国コード- (+91または91)はオプションですが、かっこで囲んでもかまいません (任意) 2桁のコード(\ d \ d) に続けて(\ sまたは - ) - )8桁の数字が続く任意 Pythonの正規表現で特定のフォーマットの電話番号をクリップボードから抽出する
私が書かれているスクリプトは、 -
import re,pyperclip,os,datetime
#Regexes for phone numbers.
cellphone = re.compile(r'((91|+91|\(+91\))?\s?\d{10})')
landline = re.compile(r'((\d{3}|\(d{3}\))?(-|\s)(\d{8}))')
landline_with_countrycode = re.compile(r'((91|+91|\(+91\))(-|\s)(\d{2})(-|\s)?(\d{8}))')
#Taking input from clipboard
text = str(pyperclip.paste())
cell_nums = []
for groups in cellphone.findall(text):
cell_nums.append(groups[0])
ll_nums = []
for groups in cellphone.findall(text):
ll_nums.append(groups[0])
ll_nums_wccode = []
for groups in cellphone.findall(text):
ll_nums_wccode.append(groups[0])
#Sending output to a file that was created on Desktop in folder abswpy named phnumbers.log
file_path = os.path.join("C:","Users","lenovo","Desktop","abswpy","phnumbers.log")
openFile = open(file_path,'a')
now = datetime.datetime.now()
openFile.write('______________________________________________________________________________________________________\n\n')
openFile.write('\n\n As updated on '+str(now)+'\n\n')
openFile.write('---------------------------------------------------------\n')
openFile.write('Cellphone Numbers - \n')
for i in cell_nums:
openFile.write(str(i))
openFile.write('---------------------------------------------------------\n')
openFile.write('Landline Numbers - \n')
for i in ll_nums:
openFile.write(str(i))
for i in ll_nums_wccode:
openFile.write(str(i))
openFile.write('---------------------------------------------------------\n')
openFile.write('Process Completed')
openFile.write('______________________________________________________________________________________________________\n\n')
openFile.close()
print "Numbers extracted if present\n"
コードはコンパイル時のエラー -
File "regex.py", line 22, in <module>
cellphone = re.compile(r'((91|+91|\(+91\))?\s?\d{10})')
File "E:\Python 2_7_11\lib/re.py", line 194, in compile
return _compile(pattern, flags)
File "E:\Python 2_7_11\lib/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error : nothing to repeat
なぜ私の表現が間違って評価されいますか? 事前にお手伝いしていただきありがとうございます。私は初心者です!
あなたは '+'をエスケープしませんでした。 –