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

回答編集履歴

3

追記

2018/11/25 04:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -20,4 +20,15 @@
20
20
  - 行数を格納するリストを用意する
21
21
  - 一行一行読み取っていく
22
22
  ・ aから始まる行なら、リストに 0 をappendする
23
- ・ そうでないなら文字数をカウントし、リストの最終要素に足す
23
+ ・ そうでないなら文字数をカウントし、リストの最終要素に足す
24
+
25
+ ```Python
26
+ with open(ファイル名) as fin:
27
+ char_counts = []
28
+ for line in fin:
29
+ if lineがaから始まる:
30
+ char_countsに0をappend
31
+ else:
32
+ lineの末尾の改行文字を除去する
33
+ char_countsの最終要素に文字数を足す
34
+ ```

2

追記

2018/11/25 04:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,13 +1,23 @@
1
1
  メモリに充分余裕があるのであれば、こんなふうにすると楽かと。
2
2
 
3
- 0. **文字列をごっそり読み込む**
3
+ - **文字列をごっそり読み込む**
4
- 0. **aから始まる行で文字列を分割してリストにする**
4
+ - **aから始まる行で文字列を分割してリストにする**
5
- 0. **リストの各要素について、空白文字を除去**
5
+ - **リストの各要素について、空白文字を除去**
6
- 0. **リストの各要素について、文字列の長さを数える**
6
+ - **リストの各要素について、文字列の長さを数える**
7
7
 
8
8
  分割方法だけアドバイスします。
9
9
  正規表現で、aから始まる行で分割すると楽です。
10
10
  ```Python
11
11
  data = re.split('^a.+$', data, flags=re.MULTILINE)
12
12
  print(data)
13
- ```
13
+ ```
14
+
15
+ 追記
16
+ ---
17
+ よく考えたら、こんな方法もありますね。
18
+ こっちの方がメモリを圧迫しなくて良いかもしれません。
19
+
20
+ - 行数を格納するリストを用意する
21
+ - 一行一行読み取っていく
22
+ ・ aから始まる行なら、リストに 0 をappendする
23
+ ・ そうでないなら文字数をカウントし、リストの最終要素に足す

1

追記

2018/11/25 04:08

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,4 +3,11 @@
3
3
  0. **文字列をごっそり読み込む**
4
4
  0. **aから始まる行で文字列を分割してリストにする**
5
5
  0. **リストの各要素について、空白文字を除去**
6
- 0. **リストの各要素について、文字列の長さを数える**
6
+ 0. **リストの各要素について、文字列の長さを数える**
7
+
8
+ 分割方法だけアドバイスします。
9
+ 正規表現で、aから始まる行で分割すると楽です。
10
+ ```Python
11
+ data = re.split('^a.+$', data, flags=re.MULTILINE)
12
+ print(data)
13
+ ```