我有一个包含多行的文件,其中一些具有空白。
== Predictions on test set ===
inst# actual predicted error prediction
1 2:' ST' 1: NT + 1
2 2:' ST' 1: NT + 1
3 2:' ST' 1: NT + 1
4 2:' ST' 1: NT + 1
5 2:' ST' 1: NT + 1
6 2:' ST' 1: NT + 1
7 2:' ST' 1: NT + 1
8 2:' ST' 1: NT + 1
9 2:' ST' 1: NT + 1
10 2:' ST' 1: NT + 1
11 2:' ST' 1: NT + 1
12 2:' ST' 1: NT + 1
13 2:' ST' 1: NT + 1
14 2:' ST' 1: NT + 1
15 2:' ST' 1: NT + 1
16 2:' ST' 1: NT + 1
17 2:' ST' 1: NT + 1
18 2:' ST' 1: NT + 1
19 2:' ST' 1: NT + 1
20 2:' ST' 1: NT + 1
21 2:' ST' 1: NT + 1
22 2:' ST' 1: NT + 1
23 2:' ST' 1: NT + 1
24 2:' ST' 1: NT + 1
25 2:' ST' 1: NT + 1
26 2:' ST' 1: NT + 1
27 2:' ST' 1: NT + 1
28 2:' ST' 1: NT + 1
29 2:' ST' 1: NT + 1
30 2:' ST' 1: NT + 1
31 2:' ST' 1: NT + 1
32 2:' ST' 1: NT + 1
33 2:' ST' 1: NT + 1
34 2:' ST' 1: NT + 1
35 2:' ST' 1: NT + 1
36 2:' ST' 1: NT + 1
37 2:' ST' 1: NT + 1
38 2:' ST' 1: NT + 1
39 2:' ST' 1: NT + 1
40 2:' ST' 1: NT + 1
41 2:' ST' 1: NT + 1
42 2:' ST' 1: NT + 1
43 2:' ST' 1: NT + 1
44 2:' ST' 1: NT + 1
45 2:' ST' 1: NT + 1
46 2:' ST' 1: NT + 1
47 2:' ST' 1: NT + 1
48 2:' ST' 1: NT + 1
49 2:' ST' 1: NT + 1
50 2:' ST' 1: NT + 1
51 2:' ST' 1: NT + 1
52 2:' ST' 1: NT + 1
53 2:' ST' 1: NT + 1
54 2:' ST' 1: NT + 1
55 2:' ST' 1: NT + 1
56 2:' ST' 1: NT + 1
57 2:' ST' 1: NT + 1
58 2:' ST' 1: NT + 1
59 2:' ST' 1: NT + 1
60 2:' ST' 1: NT + 1
61 2:' ST' 1: NT + 1
62 2:' ST' 1: NT + 1
63 2:' ST' 1: NT + 1
64 2:' ST' 1: NT + 1
65 2:' ST' 1: NT + 1
66 2:' ST' 1: NT + 1
67 2:' ST' 1: NT + 1
68 2:' ST' 1: NT + 1
69 2:' ST' 1: NT + 1
70 2:' ST' 1: NT + 1
71 2:' ST' 1: NT + 1
72 2:' ST' 1: NT + 1
73 2:' ST' 1: NT + 1
74 2:' ST' 1: NT + 1
75 2:' ST' 1: NT + 1
76 1:' NT' 1: NT 1
77 1:' NT' 1: NT 1
78 1:' NT' 1: NT 1
79 1:' NT' 1: NT 1
80 1:' NT' 1: NT 1
81 1:' NT' 1: NT 1
82 1:' NT' 1: NT 1
83 1:' NT' 1: NT 1
84 1:' NT' 1: NT 1
85 1:' NT' 1: NT 1
86 1:' NT' 1: NT 1
87 1:' NT' 1: NT 1
88 1:' NT' 1: NT 1
89 1:' NT' 1: NT 1
90 1:' NT' 1: NT 1
91 1:' NT' 1: NT 1
92 1:' NT' 1: NT 1
93 1:' NT' 1: NT 1
94 1:' NT' 1: NT 1
95 1:' NT' 1: NT 1
96 1:' NT' 1: NT 1
97 1:' NT' 1: NT 1
98 1:' NT' 1: NT 1
99 1:' NT' 1: NT 1
100 1:' NT' 1: NT 1
101 1:' NT' 1: NT 1
102 1:' NT' 1: NT 1
103 1:' NT' 1: NT 1
104 1:' NT' 1: NT 1
105 1:' NT' 1: NT 1
106 1:' NT' 1: NT 1
107 1:' NT' 1: NT 1
108 1:' NT' 1: NT 1
109 1:' NT' 1: NT 1
110 1:' NT' 1: NT 1
111 1:' NT' 1: NT 1
112 1:' NT' 1: NT 1
113 1:' NT' 1: NT 1
114 1:' NT' 1: NT 1
115 1:' NT' 1: NT 1
116 1:' NT' 1: NT 1
117 1:' NT' 1: NT 1
118 1:' NT' 1: NT 1
119 1:' NT' 1: NT 1
120 1:' NT' 1: NT 1
121 1:' NT' 1: NT 1
122 1:' NT' 1: NT 1
123 1:' NT' 1: NT 1
124 1:' NT' 1: NT 1
125 1:' NT' 1: NT 1
126 1:' NT' 1: NT 1
127 1:' NT' 1: NT 1
128 1:' NT' 1: NT 1
129 1:' NT' 1: NT 1
130 1:' NT' 1: NT 1
131 1:' NT' 1: NT 1
132 1:' NT' 1: NT 1
133 1:' NT' 1: NT 1
134 1:' NT' 1: NT 1
135 1:' NT' 1: NT 1
136 1:' NT' 1: NT 1
137 1:' NT' 1: NT 1
138 1:' NT' 1: NT 1
139 1:' NT' 1: NT 1
140 1:' NT' 1: NT 1
141 1:' NT' 1: NT 1
142 1:' NT' 1: NT 1
143 1:' NT' 1: NT 1
144 1:' NT' 1: NT 1
145 1:' NT' 1: NT 1
146 1:' NT' 1: NT 1
147 1:' NT' 1: NT 1
148 1:' NT' 1: NT 1
149 1:' NT' 1: NT 1
150 1:' NT' 1: NT 1
=== Evaluation on test set ===
Time taken to test model on supplied test set: 0.13 seconds
=== Summary ===
Correctly Classified Instances 75 50 %
Incorrectly Classified Instances 75 50 %
Kappa statistic 0
Mean absolute error 0.5
Root mean squared error 0.7071
Relative absolute error 100 %
Root relative squared error 141.4214 %
Total Number of Instances 150
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class
1.000 1.000 0.500 1.000 0.667 ? 0.500 0.500 NT
0.000 0.000 ? 0.000 ? ? 0.500 0.500 ST
Weighted Avg. 0.500 0.500 ? 0.500 ? ? 0.500 0.500
=== Confusion Matrix ===
a b <-- classified as
75 0 | a = NT
75 0 | b = ST
我想删除这些空格并将每一行放入字典中,其中'='之前的元素将是键,而'='之后的元素将是其值。
但是,我的代码至少在“删除空白”部分无效。这是代码:
x=20
y=3
z = 1.5
v = 0.1
清除空白后,我的文件应该像这样
def copyFile(filename):
"""
function's contract
"""
with open(filename, 'r') as inFile:
for line in inFile:
cleanedLine = line.strip()
if cleanedLine:
firstPart, secondPart = line.split('=')
dic[firstPart] = float(secondPart)
inFile.close()
return dic
但是不起作用。我在做什么错了?
答案 0 :(得分:5)
分割字符串后,您需要strip
。假设唯一不需要的空格位于=
周围或行内容之前或之后。
from ast import literal_eval
def copyFile(filename):
with open(filename, 'r') as inFile:
split_lines = (line.split('=', 1) for line in inFile)
d = {key.strip(): literal_eval(value.strip()) for key, value in split_lines}
return d
答案 1 :(得分:2)
您的代码存在一些问题。
对于一个,您永远不会定义dic
,因此当您尝试向其添加密钥时,您会得到一个NameError
。
第二,您不需要inFile.close()
,因为您是在with
中打开它的,它将始终在块外将其关闭。
第三,您的函数和变量名称不是PEP8标准。
第四,您需要strip
每个部分。
以下一些有效且看起来不错的代码:
def copy_file(filename):
"""
function's contract
"""
dic = {}
with open(filename, 'r') as in_file:
for line in in_file:
cleaned_line = line.strip()
if cleaned_line:
first_part, second_part = line.split('=')
dic[first_part.strip()] = float(second_part.strip())
return dic
答案 2 :(得分:1)
您有两个问题:
之所以没有删除空格,是因为您在整行上都调用.strip()
。 strip()
删除字符串的开头和结束处的空格,而不是中间的空格。而是在.strip()
和firstpart
上调用lastpart
。
这将修复您正在创建的内存字典,但是由于您永远不会写入文件,因此不会对文件进行任何更改。您将要创建文件的 second 副本,并在其中写入strip()
ed值,然后最后用新文件替换原始文件。
答案 3 :(得分:0)
要删除空格,请尝试使用.replace(“”,“”)而不是.strip()