回答編集履歴

5

バイトモードで書き出し

2021/03/31 08:28

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  messages = response.json()
34
34
 
35
- with open('chat.log','a') as f:
35
+ with open('chat.log','ab') as f:
36
36
 
37
37
  for message in messages:
38
38
 

4

文字列を結合してからエンコーディング

2021/03/31 08:28

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -40,6 +40,6 @@
40
40
 
41
41
  for info in info_pattern.findall(body):
42
42
 
43
- f.write(info.encode('cp932') + '\n')
43
+ f.write((info + '\n').encode('cp932'))
44
44
 
45
45
  ```

3

UTF8->CP932変更

2021/03/30 07:48

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -40,6 +40,6 @@
40
40
 
41
41
  for info in info_pattern.findall(body):
42
42
 
43
- f.write(info.encode('utf-8') + '\n')
43
+ f.write(info.encode('cp932') + '\n')
44
44
 
45
45
  ```

2

エンコードの問題に対応(したつもり)

2021/03/30 06:02

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -40,6 +40,6 @@
40
40
 
41
41
  for info in info_pattern.findall(body):
42
42
 
43
- f.write(info + '\n')
43
+ f.write(info.encode('utf-8') + '\n')
44
44
 
45
45
  ```

1

改行が入っている場合の対応

2021/03/30 06:01

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -1,4 +1,4 @@
1
- こんな感じでいかがでしょうか。
1
+ こんな感じでいかがでしょうか。[info]から[/info]の間に改行が入っている場合でも動きます。
2
2
 
3
3
 
4
4
 
@@ -14,9 +14,13 @@
14
14
 
15
15
  headers = {
16
16
 
17
- 'X-ChatWorkToken': '*********',
17
+ 'X-ChatWorkToken': '*********'
18
18
 
19
19
  }
20
+
21
+
22
+
23
+ info_pattern = re.compile(r'[info](.*?)[/info]', flags=re.DOTALL)
20
24
 
21
25
 
22
26
 
@@ -30,12 +34,12 @@
30
34
 
31
35
  with open('chat.log','a') as f:
32
36
 
33
- for message in messages:
37
+ for message in messages:
34
38
 
35
39
  body = message['body']
36
40
 
37
- for info in re.findall(r"[info](.*?)[/info]", body):
41
+ for info in info_pattern.findall(body):
38
42
 
39
- f.write(info + '\n')
43
+ f.write(info + '\n')
40
44
 
41
45
  ```