回答編集履歴

6

変数の間違い修正

2021/06/16 23:41

投稿

退会済みユーザー
test CHANGED
@@ -106,7 +106,7 @@
106
106
 
107
107
  s = line.split("\t")
108
108
 
109
- s = a[0]
109
+ a = s[0]
110
110
 
111
111
  ```
112
112
 
@@ -120,13 +120,13 @@
120
120
 
121
121
  s = line.split("\t")
122
122
 
123
- s1 = a[0] # 1番目
123
+ a1 = s[0] # 1番目
124
124
 
125
- if len(a) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにa[1]等とするとValueErrorが起きるため。
125
+ if len(s) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにs[1]等とするとValueErrorが起きるため。
126
126
 
127
- s2 = a[1] # 2番目
127
+ a2 = s[1] # 2番目
128
128
 
129
- s3 = a[2] # 3番目
129
+ a3 = s[2] # 3番目
130
130
 
131
131
  ```
132
132
 

5

修正continue

2021/06/16 23:41

投稿

退会済みユーザー
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  + except ValueError:
36
36
 
37
- + pass
37
+ + continue
38
38
 
39
39
 
40
40
 

4

コメントに対する回答

2021/06/16 23:38

投稿

退会済みユーザー
test CHANGED
@@ -26,9 +26,15 @@
26
26
 
27
27
  for line in lines:
28
28
 
29
- - a, _, _, _ = lines.split("\t")
29
+ + try:    # コメントの依頼より。
30
30
 
31
+ - a, _, _, _ = lines.split("\t")
32
+
31
- + a, _, _, _ = line.split("\t")
33
+ + a, _, _, _ = line.split("\t")
34
+
35
+ + except ValueError:
36
+
37
+ + pass
32
38
 
33
39
 
34
40
 
@@ -98,10 +104,30 @@
98
104
 
99
105
  ```
100
106
 
101
- s = line.split("\t")
107
+ s = line.split("\t")
102
108
 
103
109
  s = a[0]
104
110
 
105
111
  ```
106
112
 
107
113
  の方がより汎用的に使用できるんじゃないですかね。
114
+
115
+
116
+
117
+ (2番目、3番目も取得したいなら
118
+
119
+ ```
120
+
121
+ s = line.split("\t")
122
+
123
+ s1 = a[0] # 1番目
124
+
125
+ if len(a) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにa[1]等とするとValueErrorが起きるため。
126
+
127
+ s2 = a[1] # 2番目
128
+
129
+ s3 = a[2] # 3番目
130
+
131
+ ```
132
+
133
+ とします)

3

別件ついか

2021/06/16 23:36

投稿

退会済みユーザー
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  --------
86
86
 
87
- あとここも気にな
87
+ あと別件ですけどここも気になりました
88
88
 
89
89
  ```
90
90
 

2

ついか

2021/06/16 15:38

投稿

退会済みユーザー
test CHANGED
@@ -77,3 +77,31 @@
77
77
  lines.split("@")  # これはエラーになる
78
78
 
79
79
  ```
80
+
81
+
82
+
83
+
84
+
85
+ --------
86
+
87
+ あとここも気になる。
88
+
89
+ ```
90
+
91
+ a,_,_ ,_ = line.split("\t")
92
+
93
+ ```
94
+
95
+ 全ての行がタブで4つ区切られてるなら構いませんが、そうでない場合エラーで止まります。
96
+
97
+ 先頭の単語だけ得るなら
98
+
99
+ ```
100
+
101
+ s = line.split("\t")
102
+
103
+ s = a[0]
104
+
105
+ ```
106
+
107
+ の方がより汎用的に使用できるんじゃないですかね。

1

例をちょっとだけ直した

2021/06/16 15:34

投稿

退会済みユーザー
test CHANGED
@@ -48,13 +48,15 @@
48
48
 
49
49
  splitは文字列に対して使います。
50
50
 
51
+ ```
51
52
 
53
+ line="hogehoge@fugagufa"
52
54
 
53
- "hogehoge@fugagufa".split("@")
55
+ line.split("@")
54
56
 
55
- -> ["hogehoge","fugafuga"]
57
+ >>> ["hogehoge","fugafuga"]
56
58
 
57
-
59
+ ```
58
60
 
59
61
  というようにsplitに指定した引数で文字列を分割してリストにします。
60
62
 
@@ -62,10 +64,16 @@
62
64
 
63
65
 
64
66
 
65
- 逆に(語弊あるかもしれませんが)基本的に文字列じゃないものにsplitは使えません。
67
+ 基本的に文字列じゃないものにsplitは使えません。
66
68
 
67
69
 
68
70
 
71
+ 上のコードだと、line**s**は文字列ではなくリストなので、splitは使えません
69
72
 
73
+ ```
70
74
 
75
+ lines=["hoge@hoge","fuga@fuga"]
76
+
71
- 上のコードだと、line**s**は文字列ではなくリストなのでsplitは使えません
77
+ lines.split("@")  # これエラーになる
78
+
79
+ ```