質問編集履歴

8

誤字

2020/07/08 15:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,9 @@
18
18
 
19
19
 
20
20
 
21
+ (例)
22
+
21
- test.text
23
+ test.txt
22
24
 
23
25
  test sheet 5000
24
26
 

7

誤字脱字

2020/07/08 15:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -124,7 +124,7 @@
124
124
 
125
125
 
126
126
 
127
- どうしたらエラーなくExcelに記載する事ができるでしょうか?
127
+ どうしたらエラーなくExcelに書き込む事ができるでしょうか?
128
128
 
129
129
  ご回答いただけますと幸いです。
130
130
 

6

書式の修正

2020/07/08 15:56

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Python 複数のtxtファイルから特定の行抽出しExcelに出力した
1
+ Python For文で取得した値をExcelに書き込む事ができな
test CHANGED
@@ -10,152 +10,122 @@
10
10
 
11
11
 
12
12
 
13
- 実現したい事
13
+ #問題
14
+
15
+ for文で得た値をexcelのセルにひとつずつ記載したいのですがうまくいきません。
16
+
17
+ 取り出す値は複数のファイルで共通の"test sheet"を含む行になります。またその後ろの数値はそれぞれ異なります。
14
18
 
15
19
 
16
20
 
21
+ test.text
22
+
17
- *前提 1.txt ~ 100.txtがあるとします・
23
+ test sheet 5000
24
+
25
+
26
+
27
+ test1.txt
28
+
29
+ test sheet 6000
18
30
 
19
31
 
20
32
 
21
33
 
22
34
 
23
- step1 上記100個のテキストからpandaを含む行を抽出
24
-
25
- (※1つのテキストファイルで条件が一致するものが複数ある場合は1件だけ抽出)
26
-
27
-
28
-
29
- step2 その行からさらに2つめの値を抽出
35
+ #試した事
30
36
 
31
37
 
32
38
 
39
+ ```ここに言語を入力
40
+
33
- step3 抽出元のtxtファイルごとに異なるセルへ書き出し
41
+ import openpyxl as px
42
+
43
+ import pandas as pd
44
+
45
+ import glob
34
46
 
35
47
 
36
48
 
49
+ a = glob.glob('*.txt')
50
+
37
- 例 
51
+ print (a)
38
52
 
39
53
 
40
54
 
41
-  1.txtから抽出した行 (以下該当する行が重複する場合は1行のみを取得)
55
+ wb = px.Workbook()
42
56
 
43
- ----------------------------
44
-
45
- panda 1000 5000 8000
57
+ ws = wb.active
46
-
47
-  panda 1000 5000 8000 ←この行は必要ない
48
58
 
49
59
 
50
60
 
51
61
 
52
62
 
53
- 2.txt から抽出した行
63
+ j = 1
54
64
 
55
-  ----------------------------
65
+ for i in a:
56
66
 
67
+ path = i
68
+
69
+ with open(path) as f:
70
+
57
- panda 8989 19299 8000
71
+ lines = f.readlines()
72
+
73
+ lines_strip = [line.strip() for line in lines]
74
+
75
+ Value1 = [line for line in lines_strip if 'test sheet' in line]
76
+
77
+ print(Value1[0])
58
78
 
59
79
 
60
80
 
61
-  3.txtから抽出した行
81
+ ws.cell(row=j,column=2).value = Value1
62
82
 
63
- ----------------------------
64
-
65
- panda 1000 5000 8000
83
+ j += 1
66
84
 
67
85
 
68
86
 
69
87
 
70
88
 
89
+ wb.save('test.xlsx')
71
90
 
72
91
 
92
+
73
- ※上記の数値はtxtファイルごとにまったく違う数値となります
93
+ ```
74
94
 
75
95
 
76
96
 
77
97
 
78
98
 
79
- 上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力
80
-
81
- 1.txtから抽出した5000は sheet1  A1へ書き込む
99
+ 上記を試ましがエラーが以下ようなエラーが発生します。
82
-
83
- 2.txtから抽出した19299は sheet2 の A3へ書き込む
84
-
85
- 3.txtから抽出した5000は sheet1 の A3へ書き込む
86
-
87
-
88
-
89
-
90
-
91
- 現在までに試した内容
92
-
93
-
94
100
 
95
101
 
96
102
 
97
103
  ```ここに言語を入力
98
104
 
99
- import glob
105
+ Traceback (most recent call last):
100
106
 
107
+ File "C:\Users\user\Desktop\Python Practice\test.py", line 23, in <module>
101
108
 
109
+ ws.cell(row=j,column=2).value = Value1
102
110
 
103
- #複数のファイルを読み込む
111
+ File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 216, in value
104
112
 
105
- for filename in glob.glob('*.txt'):
113
+ self._bind_value(value)
106
114
 
107
- print(filename)
115
+ File "C:\Users\cell\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 199, in _bind_value
108
116
 
117
+ raise ValueError("Cannot convert {0!r} to Excel".format(value))
109
118
 
110
-
111
- with open(filename, "r", encoding="utf-8") as f:
112
-
113
- lines = f.readlines()
114
-
115
-
116
-
117
- lines_strip = [line.strip() for line in lines]
118
-
119
- Value1 = [line for line in lines_strip if 'panda' in line]
119
+ ValueError: Cannot convert ['test sheet 5000'] to Excel
120
-
121
-
122
-
123
- for line in Value1:
124
-
125
- print(Value1[0])
126
-
127
-
128
-
129
- # ブックを取得
130
-
131
- book = openpyxl.load_workbook('test.xlsx')
132
-
133
- # シートを取得
134
-
135
- sheet = book['Sheet1']
136
-
137
- sheet['A1'] = (Value1[0])
138
-
139
-
140
-
141
- # 保存する
142
-
143
- book.save('test.xlsx')
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
- 上記どうしたら実現できますでしょうか?
152
-
153
- Pythonにお詳しい方ご教示いただけますと幸いです。
154
-
155
- よろしくお願いいたします。
156
-
157
-
158
120
 
159
121
 
160
122
 
161
123
  ```
124
+
125
+
126
+
127
+ どうしたらエラーなくExcelに記載する事ができるでしょうか?
128
+
129
+ ご回答いただけますと幸いです。
130
+
131
+ よろしくお願いいたします。

5

2020/07/08 15:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

4

2020/07/08 03:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  1.txtから抽出した5000は sheet1 の A1へ書き込む
82
82
 
83
- 2.txtから抽出した8989は sheet2 の A3へ書き込む
83
+ 2.txtから抽出した19299は sheet2 の A3へ書き込む
84
84
 
85
85
  3.txtから抽出した5000は sheet1 の A3へ書き込む
86
86
 

3

2020/07/08 03:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,6 +148,8 @@
148
148
 
149
149
 
150
150
 
151
+ 上記どうしたら実現できますでしょうか?
152
+
151
153
  Pythonにお詳しい方ご教示いただけますと幸いです。
152
154
 
153
155
  よろしくお願いいたします。

2

誤字

2020/07/07 14:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -76,13 +76,13 @@
76
76
 
77
77
 
78
78
 
79
- 上記からそれぞれ、2つめの値"5000""8989"を出力
79
+ 上記からそれぞれ、2つめの値"5000" "8989" "5000"を出力
80
80
 
81
- 1.txtから抽出したは sheet1 の A1へ書き込む
81
+ 1.txtから抽出した5000は sheet1 の A1へ書き込む
82
82
 
83
- 2.txtから抽出したは sheet2 の A3へ書き込む
83
+ 2.txtから抽出した8989は sheet2 の A3へ書き込む
84
84
 
85
- 3.txtから抽出したは sheet1 の A3へ書き込む
85
+ 3.txtから抽出した5000は sheet1 の A3へ書き込む
86
86
 
87
87
 
88
88
 

1

書式の改善

2020/07/07 14:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  step1 上記100個のテキストからpandaを含む行を抽出
24
24
 
25
- (※1つのtxt1ファイルで条件が一致するものが複数ある場合は1件だけ抽出)
25
+ (※1つのテキストファイルで条件が一致するものが複数ある場合は1件だけ抽出)
26
26
 
27
27
 
28
28