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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

533閲覧

pythonの出力した結果をExcelに書き出す構文について

Kirari

総合スコア32

Python 3.x

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

0グッド

0クリップ

投稿2019/07/09 13:35

編集2019/07/09 13:49

前提・実現したいこと

すみません。何度も何度も質問して申し訳ないです。pythonで出力した結果をExcelに書き出そうとしています。
※EXCELのB列に1行ずつ順番に1000行以上書き出すことを考えています。

アドバイスをいただいて、pythonから出された結果をリストで置いて書き出してみては、とのことでしたので、該当のソースコードを作成しましたが、以下のエラーメッセージが出ました。書き出すにはどのようにしたらよろしいでしょうか。アドバイスいただけると幸いです。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "<ipython-input-1-83e0460acce4>", line 1, in <module> runfile('C:/Users/XXXXXXXX/.spyder-py3/temp.py', wdir='C:/Users/XXXXXXXX/.spyder-py3') File "C:\Users\XXXXXXXX\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile execfile(filename, namespace) File "C:\Users\XXXXXXXX\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/XXXXXXXX/.spyder-py3/temp.py", line 43, in <module> for a_tag in find_all('<p class="d-chat_timeline-name">'): NameError: name 'find_all' is not defined

該当のソースコード

python

1Spyderエディタ 2 3これは一時的なスクリプトファイルです 4""" 5 6import os, tkinter, tkinter.filedialog, tkinter.messagebox 7root = tkinter.Tk() 8root.withdraw() 9fTyp = [("","*.html")] 10file = tkinter.filedialog.askopenfilename(filetypes = fTyp) 11fd=open(file,"r",encoding="utf-8") 12 13 14res=fd.read() 15from bs4 import BeautifulSoup 16 17cur_pos=0 18while True : 19 target_tag = '<p class="d-chat_timeline-name">' 20 closing_tag = '</p>' 21 start_pos = res[cur_pos:].find(target_tag) 22 end_pos = res[cur_pos:].find(closing_tag) 23 if (start_pos == -1) or (end_pos == -1): 24 break 25 mojie = res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos] 26 print(mojie) 27 cur_pos = cur_pos + end_pos + len(closing_tag) 28 29mojie_list = "mojie" 30 31import openpyxl as px 32wb = px.Workbook() 33ws = wb.active 34sheet = wb.create_sheet('sheet1') 35 36i=1 37for a_tag in find_all('<p class="d-chat_timeline-name">'): 38 39 ws['A'+str(i)].value = date1 40 41 i += 1 42 43wb.save(r'C:\Users\XXXXXXX\Desktop\sample2.xlsx')

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

y_waiwai

2019/07/09 13:42

エラーメッセージは全文をコピペしてそのまま提示しましょう
Kirari

2019/07/09 13:50

ありがとうございます。エラーメッセージを張り付けしました。
guest

回答1

0

ベストアンサー

NameError: name 'find_all' is not defined

'find_all'が定義されていません

投稿2019/07/09 13:43

y_waiwai

総合スコア87747

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

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

Kirari

2019/07/09 22:20 編集

質問させてください。TypeError: 'str' object is not callableと出てきました。この場合のstrをどのように設定すればいいのでしょうか。 # -*- coding: utf-8 -*- """ Spyderエディタ これは一時的なスクリプトファイルです """ #ファイルを読み込む import os, tkinter, tkinter.filedialog, tkinter.messagebox root = tkinter.Tk() root.withdraw() fTyp = [("","*.html")] file = tkinter.filedialog.askopenfilename(filetypes = fTyp) fd=open(file,"r",encoding="utf-8") res=fd.read() from bs4 import BeautifulSoup cur_pos=0 while True : target_tag = '<p class="d-chat_timeline-name">' closing_tag = '</p>' start_pos = res[cur_pos:].find(target_tag) end_pos = res[cur_pos:].find(closing_tag) if (start_pos == -1) or (end_pos == -1): break mojie = res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos] print(mojie) cur_pos = cur_pos + end_pos + len(closing_tag) mojie_list = "mojie" import openpyxl as px wb = px.Workbook() ws = wb.active sheet = wb.create_sheet('sheet1') i=1 find_all = "mojie_list" for mojie in find_all('<p class="d-chat_timeline-name">'): ws['A'+str(i)].value = date i += 1 wb.save(r'C:\Users\XXXXXXXXX\Desktop\sample2.xlsx') 以下、エラー内容 Traceback (most recent call last): File "<ipython-input-6-83e0460acce4>", line 1, in <module> runfile('C:/Users/XXXXXXX/.spyder-py3/temp.py', wdir='C:/Users/XXXXXXX/.spyder-py3') File "C:\Users\XXXXXXX\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile execfile(filename, namespace) File "C:\Users\XXXXXXX\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/XXXXXX/.spyder-py3/temp.py", line 44, in <module> for mojie in find_all('<p class="d-chat_timeline-name">'): TypeError: 'str' object is not callable
y_waiwai

2019/07/09 22:34 編集

まず、エラーメッセージを読みましょう > TypeError: 'str' object is not callable 'str'オブジェクトは呼び出せない > find_all = "mojie_list" とあるため、find_all は文字列変数になってます。 そのため、次の行が意味不明になってますね なんかimportが足らないとかの話なんでは
Kirari

2019/07/10 01:24

ありがとうございます。すみません。質問させてください。表記の件、トライアルしていますが、 mojieをリストに保存させておき、エクセルに書きださせようとしています。 strを供給してほしいと言われたのですが、ネットで調べてもわからず、アドバイスいただけないでしょうか。 # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ #ファイルを読み込む import os, tkinter, tkinter.filedialog, tkinter.messagebox root = tkinter.Tk() root.withdraw() fTyp = [("","*.html")] file="/Users/XXXXXX/Desktop/message1.html" fd=open(file,"r",encoding="utf-8") res=fd.read() from bs4 import BeautifulSoup cur_pos=0 while True : target_tag = '<p class="d-chat_timeline-name">' closing_tag = '</p>' start_pos = res[cur_pos:].find(target_tag) end_pos = res[cur_pos:].find(closing_tag) if (start_pos == -1) or (end_pos == -1): break mojie = res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos] print(mojie) cur_pos = cur_pos + end_pos + len(closing_tag) import openpyxl mojie_list = ["mojie"] wb = openpyxl.Workbook() ws = wb.active rows = [mojie_list] for mojie in mojie_list: ws.append(mojie) wb.save("/Users/XXXXXXXX/Downloads/out.xlsx") エラーメッセージ Traceback (most recent call last): File "<ipython-input-36-0652fd985919>", line 1, in <module> runfile('/Users/XXXX/.spyder-py3/temp.py', wdir='/Users/XXXX/.spyder-py3') File "/Users/XXXX/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 827, in runfile execfile(filename, namespace) File "/Users/XXXX/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "/Users/XXXX/.spyder-py3/temp.py", line 44, in <module> ws.append(mojie) File "/Users/XXXX/anaconda3/lib/python3.7/site-packages/openpyxl/worksheet/worksheet.py", line 667, in append self._invalid_row(iterable) File "/Users/XXXX/anaconda3/lib/python3.7/site-packages/openpyxl/worksheet/worksheet.py", line 794, in _invalid_row type(iterable)) TypeError: Value must be a list, tuple, range or generator, or a dict. Supplied value is <class 'str'>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問