teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

誤字

2020/07/08 15:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,8 @@
8
8
  for文で得た値をexcelのセルにひとつずつ記載したいのですがうまくいきません。
9
9
  取り出す値は複数のファイルで共通の"test sheet"を含む行になります。またその後ろの数値はそれぞれ異なります。
10
10
 
11
+ (例)
11
- test.text
12
+ test.txt
12
13
  test sheet 5000
13
14
 
14
15
  test1.txt

7

誤字脱字

2020/07/08 15:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -61,6 +61,6 @@
61
61
 
62
62
  ```
63
63
 
64
- どうしたらエラーなくExcelに記載する事ができるでしょうか?
64
+ どうしたらエラーなくExcelに書き込む事ができるでしょうか?
65
65
  ご回答いただけますと幸いです。
66
66
  よろしくお願いいたします。

6

書式の修正

2020/07/08 15:56

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Python 複数のtxtファイルから特定の行を抽出しExcelに出力した
1
+ Python For文で取得た値をExcelに書き込む事ができな
body CHANGED
@@ -4,78 +4,63 @@
4
4
  Pythonに詳しい方ご回答いただけますと幸いです。
5
5
 
6
6
 
7
- 実現したい事
7
+ #問題
8
+ for文で得た値をexcelのセルにひとつずつ記載したいのですがうまくいきません。
9
+ 取り出す値は複数のファイルで共通の"test sheet"を含む行になります。またその後ろの数値はそれぞれ異なります。
8
10
 
11
+ test.text
9
- *前提 1.txt ~ 100.txtがあるとします・
12
+ test sheet 5000
10
13
 
14
+ test1.txt
15
+ test sheet 6000
11
16
 
12
- step1 上記100個のテキストからpandaを含む行を抽出
13
- (※1つのテキストファイルで条件が一致するものが複数ある場合は1件だけ抽出)
14
-
15
- step2 その行からさらに2つめの値を抽出
16
17
 
17
- step3 抽出元のtxtファイルごとに異なるセルへ書き出
18
+ #試た事
18
19
 
19
- 例 
20
+ ```ここに言語を入力
21
+ import openpyxl as px
22
+ import pandas as pd
23
+ import glob
20
24
 
21
-  1.txtから抽出した行 (以下該当する行が重複する場合は1行のみを取得)
22
- ----------------------------
23
- panda 1000 5000 8000
24
-  panda 1000 5000 8000 ←この行は必要ない
25
+ a = glob.glob('*.txt')
26
+ print (a)
25
27
 
28
+ wb = px.Workbook()
29
+ ws = wb.active
26
30
 
27
- 2.txt から抽出した行
28
-  ----------------------------
29
- panda 8989 19299 8000
30
31
 
32
+ j = 1
31
-  3.txtから抽出した行
33
+ for i in a:
32
- ----------------------------
34
+ path = i
33
- panda 1000 5000 8000
35
+ with open(path) as f:
36
+ lines = f.readlines()
37
+ lines_strip = [line.strip() for line in lines]
38
+ Value1 = [line for line in lines_strip if 'test sheet' in line]
39
+ print(Value1[0])
34
40
 
41
+ ws.cell(row=j,column=2).value = Value1
42
+ j += 1
35
43
 
36
44
 
37
- ※上記の数値はtxtファイルごとにまったく違う数値となります
45
+ wb.save('test.xlsx')
38
46
 
47
+ ```
39
48
 
40
- 上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力
41
- 1.txtから抽出した5000は sheet1 の A1へ書き込む
42
- 2.txtから抽出した19299は sheet2 の A3へ書き込む
43
- 3.txtから抽出した5000は sheet1 の A3へ書き込む
44
49
 
50
+ 上記を試しましたがエラーが以下のようなエラーが発生します。
45
51
 
46
- 現在までに試した内容
47
-
48
-
49
52
  ```ここに言語を入力
53
+ Traceback (most recent call last):
54
+ File "C:\Users\user\Desktop\Python Practice\test.py", line 23, in <module>
55
+ ws.cell(row=j,column=2).value = Value1
56
+ File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 216, in value
50
- import glob
57
+ self._bind_value(value)
58
+ File "C:\Users\cell\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 199, in _bind_value
59
+ raise ValueError("Cannot convert {0!r} to Excel".format(value))
60
+ ValueError: Cannot convert ['test sheet 5000'] to Excel
51
61
 
52
- #複数のファイルを読み込む
62
+ ```
53
- for filename in glob.glob('*.txt'):
54
- print(filename)
55
63
 
56
- with open(filename, "r", encoding="utf-8") as f:
57
- lines = f.readlines()
58
-
59
- lines_strip = [line.strip() for line in lines]
60
- Value1 = [line for line in lines_strip if 'panda' in line]
61
-
62
- for line in Value1:
63
- print(Value1[0])
64
-
65
- # ブックを取得
66
- book = openpyxl.load_workbook('test.xlsx')
67
- # シートを取得
68
- sheet = book['Sheet1']
69
- sheet['A1'] = (Value1[0])
70
-
71
- # 保存する
72
- book.save('test.xlsx')
73
-
74
-
75
-
76
- 上記どうしたら実現できますでしょうか?
64
+ どうしたらエラーなくExcelに記載する事ができでしょうか?
77
- Pythonにお詳しい方教示いただけますと幸いです。
65
+ 回答いただけますと幸いです。
78
- よろしくお願いいたします。
66
+ よろしくお願いいたします。
79
-
80
-
81
- ```

5

2020/07/08 15:50

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
File without changes

4

2020/07/08 03:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -39,7 +39,7 @@
39
39
 
40
40
  上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力
41
41
  1.txtから抽出した5000は sheet1 の A1へ書き込む
42
- 2.txtから抽出した8989は sheet2 の A3へ書き込む
42
+ 2.txtから抽出した19299は sheet2 の A3へ書き込む
43
43
  3.txtから抽出した5000は sheet1 の A3へ書き込む
44
44
 
45
45
 

3

2020/07/08 03:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -73,6 +73,7 @@
73
73
 
74
74
 
75
75
 
76
+ 上記どうしたら実現できますでしょうか?
76
77
  Pythonにお詳しい方ご教示いただけますと幸いです。
77
78
  よろしくお願いいたします。
78
79
 

2

誤字

2020/07/07 14:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -37,10 +37,10 @@
37
37
  ※上記の数値はtxtファイルごとにまったく違う数値となります
38
38
 
39
39
 
40
- 上記からそれぞれ、2つめの値"5000""8989"を出力
40
+ 上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力
41
- 1.txtから抽出したは sheet1 の A1へ書き込む
41
+ 1.txtから抽出した5000は sheet1 の A1へ書き込む
42
- 2.txtから抽出したは sheet2 の A3へ書き込む
42
+ 2.txtから抽出した8989は sheet2 の A3へ書き込む
43
- 3.txtから抽出したは sheet1 の A3へ書き込む
43
+ 3.txtから抽出した5000は sheet1 の A3へ書き込む
44
44
 
45
45
 
46
46
  現在までに試した内容

1

書式の改善

2020/07/07 14:06

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
  step1 上記100個のテキストからpandaを含む行を抽出
13
- (※1つのtxt1ファイルで条件が一致するものが複数ある場合は1件だけ抽出)
13
+ (※1つのテキストファイルで条件が一致するものが複数ある場合は1件だけ抽出)
14
14
 
15
15
  step2 その行からさらに2つめの値を抽出
16
16