回答編集履歴

3

Update

2022/06/19 06:53

投稿

melian
melian

スコア19825

test CHANGED
@@ -33,3 +33,22 @@
33
33
  outputText.write([*v][-1] if i else ''.join(v))
34
34
  ```
35
35
 
36
+ > テキストファイルを読み込みたい場合はどうすればいいでしょうか?
37
+ ```python
38
+ from itertools import groupby
39
+
40
+ inputFile = 'sample.txt'
41
+ outputFile = 'sample_2.txt'
42
+
43
+ containWord = ['+']
44
+ with open(inputFile, 'r') as infile, open(outputFile, 'w') as outfile:
45
+ for i, v in groupby(infile, key=lambda l: any(w in l for w in containWord)):
46
+ outfile.write(next(v) if i else ''.join(v))
47
+
48
+ # containWord = ['ー']
49
+ # with open(inputFile, 'r') as infile, open(outputFile, 'w') as outfile:
50
+ # for i, v in groupby(infile, key=lambda l: any(w in l for w in containWord)):
51
+ # outfile.write([*v][-1] if i else ''.join(v))
52
+ ```
53
+
54
+

2

Update

2022/06/19 05:51

投稿

melian
melian

スコア19825

test CHANGED
@@ -26,3 +26,10 @@
26
26
  outputText.close()
27
27
  ```
28
28
 
29
+ > -が2回以上続いた際に最後の-の行以外は削除する
30
+ ```python
31
+ containWords = ['ー']
32
+ for i, v in groupby(inputText, key=lambda l: any(w in l for w in containWords)):
33
+ outputText.write([*v][-1] if i else ''.join(v))
34
+ ```
35
+

1

Update

2022/06/19 05:30

投稿

melian
melian

スコア19825

test CHANGED
@@ -3,34 +3,26 @@
3
3
  from itertools import groupby
4
4
 
5
5
  lines = '''
6
- foo
6
+ ・見積書
7
- bar
7
+ ・注文書
8
- baz
8
+ ・請求書
9
+ + ・売上管理表
10
+ ・行程管理表
11
+ ー ・売上管理表
12
+ + ・P/S
13
+ + ・B/S
9
- end
14
+ ー ・利益
10
- foo
15
+ ー ・合計
11
- 1
12
- bar
16
+ + ・その他
13
- 2
14
- baz
15
- 3
16
17
  '''.strip()
17
- text = io.StringIO(lines)
18
+ inputText = io.StringIO(lines)
19
+ outputText = io.StringIO()
18
20
 
19
- containWords = ['foo', 'bar', 'baz']
21
+ containWords = ['']
20
- outputText = io.StringIO()
21
- for _, v in groupby(text, key=lambda l: any(w in l for w in containWords)):
22
+ for i, v in groupby(inputText, key=lambda l: any(w in l for w in containWords)):
22
- outputText.write(next(v))
23
+ outputText.write(next(v) if i else ''.join(v))
23
24
 
24
25
  print(outputText.getvalue())
25
26
  outputText.close()
27
+ ```
26
28
 
27
- #
28
- foo
29
- end
30
- foo
31
- 1
32
- bar
33
- 2
34
- baz
35
- 3
36
- ```