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

回答編集履歴

6

変数の間違い修正

2021/06/16 23:41

投稿

退会済みユーザー
answer CHANGED
@@ -52,16 +52,16 @@
52
52
  先頭の単語だけ得るなら
53
53
  ```
54
54
  s = line.split("\t")
55
- s = a[0]
55
+ a = s[0]
56
56
  ```
57
57
  の方がより汎用的に使用できるんじゃないですかね。
58
58
 
59
59
  (2番目、3番目も取得したいなら
60
60
  ```
61
61
  s = line.split("\t")
62
- s1 = a[0] # 1番目
62
+ a1 = s[0] # 1番目
63
- if len(a) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにa[1]等とするとValueErrorが起きるため。
63
+ if len(s) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにs[1]等とするとValueErrorが起きるため。
64
- s2 = a[1] # 2番目
64
+ a2 = s[1] # 2番目
65
- s3 = a[2] # 3番目
65
+ a3 = s[2] # 3番目
66
66
  ```
67
67
  とします)

5

修正continue

2021/06/16 23:41

投稿

退会済みユーザー
answer CHANGED
@@ -16,7 +16,7 @@
16
16
  - a, _, _, _ = lines.split("\t")
17
17
  + a, _, _, _ = line.split("\t")
18
18
  + except ValueError:
19
- + pass
19
+ + continue
20
20
 
21
21
  if not str(a)=='2g-3950cc':
22
22
  f.writeline()

4

コメントに対する回答

2021/06/16 23:38

投稿

退会済みユーザー
answer CHANGED
@@ -12,8 +12,11 @@
12
12
 
13
13
  with open(filepath1+textname1[i],'w',encoding='utf-8') as f:
14
14
  for line in lines:
15
+ + try:    # コメントの依頼より。
15
- - a, _, _, _ = lines.split("\t")
16
+ - a, _, _, _ = lines.split("\t")
16
- + a, _, _, _ = line.split("\t")
17
+ + a, _, _, _ = line.split("\t")
18
+ + except ValueError:
19
+ + pass
17
20
 
18
21
  if not str(a)=='2g-3950cc':
19
22
  f.writeline()
@@ -48,7 +51,17 @@
48
51
  全ての行がタブで4つ区切られてるなら構いませんが、そうでない場合エラーで止まります。
49
52
  先頭の単語だけ得るなら
50
53
  ```
51
- s = line.split("\t")
54
+ s = line.split("\t")
52
55
  s = a[0]
53
56
  ```
54
- の方がより汎用的に使用できるんじゃないですかね。
57
+ の方がより汎用的に使用できるんじゃないですかね。
58
+
59
+ (2番目、3番目も取得したいなら
60
+ ```
61
+ s = line.split("\t")
62
+ s1 = a[0] # 1番目
63
+ if len(a) > 2: # 分割後のリストの長さが2より大きいか調べる。これをしないと、1つしか単語がないのにa[1]等とするとValueErrorが起きるため。
64
+ s2 = a[1] # 2番目
65
+ s3 = a[2] # 3番目
66
+ ```
67
+ とします)

3

別件ついか

2021/06/16 23:36

投稿

退会済みユーザー
answer CHANGED
@@ -41,7 +41,7 @@
41
41
 
42
42
 
43
43
  --------
44
- あとここも気にな
44
+ あと別件ですけどここも気になりました
45
45
  ```
46
46
  a,_,_ ,_ = line.split("\t")
47
47
  ```

2

ついか

2021/06/16 15:38

投稿

退会済みユーザー
answer CHANGED
@@ -37,4 +37,18 @@
37
37
  ```
38
38
  lines=["hoge@hoge","fuga@fuga"]
39
39
  lines.split("@")  # これはエラーになる
40
- ```
40
+ ```
41
+
42
+
43
+ --------
44
+ あとここも気になる。
45
+ ```
46
+ a,_,_ ,_ = line.split("\t")
47
+ ```
48
+ 全ての行がタブで4つ区切られてるなら構いませんが、そうでない場合エラーで止まります。
49
+ 先頭の単語だけ得るなら
50
+ ```
51
+ s = line.split("\t")
52
+ s = a[0]
53
+ ```
54
+ の方がより汎用的に使用できるんじゃないですかね。

1

例をちょっとだけ直した

2021/06/16 15:34

投稿

退会済みユーザー
answer CHANGED
@@ -23,14 +23,18 @@
23
23
  [splitが使えるときと使えないときの違いがよく分かりません....]
24
24
  に関してですが、
25
25
  splitは文字列に対して使います。
26
-
26
+ ```
27
- "hogehoge@fugagufa".split("@")
27
+ line="hogehoge@fugagufa"
28
+ line.split("@")
28
- -> ["hogehoge","fugafuga"]
29
+ >>> ["hogehoge","fugafuga"]
29
-
30
+ ```
30
31
  というようにsplitに指定した引数で文字列を分割してリストにします。
31
32
 
32
33
 
33
- 逆に(語弊あるかもしれませんが)基本的に文字列じゃないものにsplitは使えません。
34
+ 基本的に文字列じゃないものにsplitは使えません。
34
35
 
35
-
36
- 上のコードだと、line**s**は文字列ではなくリストなのでsplitは使えません
36
+ 上のコードだと、line**s**は文字列ではなくリストなのでsplitは使えません
37
+ ```
38
+ lines=["hoge@hoge","fuga@fuga"]
39
+ lines.split("@")  # これはエラーになる
40
+ ```