こんにちは
Python 初心者です。ずっと悩んでいます。
Pythonに詳しい方ご回答いただけますと幸いです。
#問題
for文で得た値をexcelのセルにひとつずつ記載したいのですがうまくいきません。
取り出す値は複数のファイルで共通の"test sheet"を含む行になります。またその後ろの数値はそれぞれ異なります。
(例)
test.txt
test sheet 5000
test1.txt
test sheet 6000
#試した事
import openpyxl as px import pandas as pd import glob a = glob.glob('*.txt') print (a) wb = px.Workbook() ws = wb.active j = 1 for i in a: path = i with open(path) as f: lines = f.readlines() lines_strip = [line.strip() for line in lines] Value1 = [line for line in lines_strip if 'test sheet' in line] print(Value1[0]) ws.cell(row=j,column=2).value = Value1 j += 1 wb.save('test.xlsx')
上記を試しましたがエラーが以下のようなエラーが発生します。
Traceback (most recent call last): File "C:\Users\user\Desktop\Python Practice\test.py", line 23, in <module> ws.cell(row=j,column=2).value = Value1 File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 216, in value self._bind_value(value) File "C:\Users\cell\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 199, in _bind_value raise ValueError("Cannot convert {0!r} to Excel".format(value)) ValueError: Cannot convert ['test sheet 5000'] to Excel
どうしたらエラーなくExcelに書き込む事ができるでしょうか?
ご回答いただけますと幸いです。
よろしくお願いいたします。
で、しつもんはなんでしょうか
どのようなコードを書けば実現可能でしょうか?
もしくは、ライブラリ等のインストールは必要でしょうか?
ご回答頂けますと幸いです。
「上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力」
2.txtからは19299ではないのでしょうか
「1.txtから抽出した5000は sheet1 の A1へ書き込む
2.txtから抽出した8989は sheet2 の A3へ書き込む
3.txtから抽出した5000は sheet1 の A3へ書き込む」
このルールが分かりません
2.txtだけsheet2で3.txtはsheet1に戻るのは何故でしょうか。A2は用いずA3なのは何故でしょうか。
Python以前に問題点を整理なさってください。
aokikenichiさん
コメント頂きありがとうございます。
2.textの件ご指摘通り19299が出力したい値となります。
また、書き込むルールについては、for文で取得した結果をそれぞれ異なるシート/セルに書き込む事が可能かということでそうしています。
問題点は、
for文で取得した値を取得元のテキストファイルごとに違うセルに書きこめないという事です。
冗長になってしまって申し訳ございません。
優秀な皆さまのご知恵をお貸しいただけると幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー