回答編集履歴

3

修正

2019/07/21 15:20

投稿

Yhaya
Yhaya

スコア439

test CHANGED
@@ -122,17 +122,9 @@
122
122
 
123
123
  if len (cols)<=1:break
124
124
 
125
- try:
125
+ cols=list(map(int,cols))
126
126
 
127
- cols=list(map(int,cols))
128
127
 
129
- except:
130
-
131
- print("Error: ", cols, f"at line {num}")
132
-
133
- print(line)
134
-
135
- break
136
128
 
137
129
  result.append(cols)
138
130
 

2

解決方法の追加

2019/07/21 15:20

投稿

Yhaya
Yhaya

スコア439

test CHANGED
@@ -75,3 +75,69 @@
75
75
  ```
76
76
 
77
77
  何も入っていない文字(?)が大量に20行目以降に入ってしまっており、これがエラーとなっているようです。
78
+
79
+
80
+
81
+ ## 解決方法
82
+
83
+ 何も入っていない文字が量産されていないところは、タブを\tと書くならば
84
+
85
+
86
+
87
+ ```
88
+
89
+ \t\t\t\t\t\t\t\t\t1
90
+
91
+ ```
92
+
93
+ のようになっている場所だと思います。なので、タブが複数連続している場所は1つにまとめ、先頭のタブは消すという処理をすれば良いと思います。
94
+
95
+
96
+
97
+ ```python
98
+
99
+ import re # 正規表現を使う
100
+
101
+
102
+
103
+ filename = "maze2.tsv"
104
+
105
+ fp=open(filename,"rt",encoding="utf-8")
106
+
107
+ tsv= fp.read()
108
+
109
+ rows=tsv.split("\n")
110
+
111
+ result=[]
112
+
113
+
114
+
115
+ for num, line in enumerate(rows):
116
+
117
+ line = re.sub(r"\t+", "\t", line) # タブが複数あるところは1つに置き換える
118
+
119
+ line = re.sub("^\t", "", line) # 先頭のタブは消す
120
+
121
+ cols=line.split("\t")
122
+
123
+ if len (cols)<=1:break
124
+
125
+ try:
126
+
127
+ cols=list(map(int,cols))
128
+
129
+ except:
130
+
131
+ print("Error: ", cols, f"at line {num}")
132
+
133
+ print(line)
134
+
135
+ break
136
+
137
+ result.append(cols)
138
+
139
+ ```
140
+
141
+
142
+
143
+ これで行けるはず。。。

1

エラー箇所の分析を追加

2019/07/21 15:18

投稿

Yhaya
Yhaya

スコア439

test CHANGED
@@ -1 +1,77 @@
1
- `cols=line.split("\t")`の中身に改行文字`\n`とか入ってないですか?このエラーはintに変換できないものが入っていると言っている気がします
1
+ `cols=line.split("\t")`の中身に改行文字`\n`とか入ってないですか?このエラーはintに変換できないものが入っていると言っている気がします.
2
+
3
+
4
+
5
+ 追記
6
+
7
+ どこでエラーが発生しているか確かめるために、つぎのコードを実行しました。
8
+
9
+
10
+
11
+ ```python
12
+
13
+ if __name__ == "__main__":
14
+
15
+ filename = "maze2.tsv"
16
+
17
+ fp=open(filename,"rt",encoding="utf-8")
18
+
19
+ tsv= fp.read()
20
+
21
+ rows=tsv.split("\n")
22
+
23
+ result=[]
24
+
25
+
26
+
27
+ for num, line in enumerate(rows):
28
+
29
+ cols=line.split("\t")
30
+
31
+ if len (cols)<=1:break
32
+
33
+ try:
34
+
35
+ cols=list(map(int,cols))
36
+
37
+ except:
38
+
39
+ print("Error: ", cols, f"at line {num}")
40
+
41
+ result.append(cols)
42
+
43
+ ```
44
+
45
+
46
+
47
+ その結果がこちらです。
48
+
49
+ ```bash
50
+
51
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1'] at line 20
52
+
53
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1'] at line 21
54
+
55
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1'] at line 22
56
+
57
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1'] at line 23
58
+
59
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1'] at line 24
60
+
61
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 25
62
+
63
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 26
64
+
65
+ Error: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 27
66
+
67
+ Error: ['1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 28
68
+
69
+ Error: ['1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 29
70
+
71
+ Error: ['1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] at line 30
72
+
73
+
74
+
75
+ ```
76
+
77
+ 何も入っていない文字(?)が大量に20行目以降に入ってしまっており、これがエラーとなっているようです。