使用Python打开文件时很困惑。顺便说一句,我正在使用python3.4。
首先它是一个日志文件(随时附加的大文件),因此iconv
是不可能的。
Info1 file
是ASCII文字。
demo git:master ❯ file 1.log
1.log: ASCII text, with very long lines
Info2 ipython
使用默认编码“UTF-8”打开它:
In [1]: f = open('1.log')
In [2]: f.encoding
Out[2]: 'UTF-8'
首先我open('1.log', encoding='utf-8', mode='r')
错误:'utf-8'编解码器无法解码位置6435中的字节0xb1:无效的起始字节
我open('1.log', encoding='ascii', mode='r')
错误:'ascii'编解码器无法解码6633位的字节0xe9:序数 不在范围内(128)
如何在每行读取时优雅地处理此文件?
这是我在github上的演示demo
答案 0 :(得分:1)
可能是Windows CP 1252或拉丁语1.请尝试使用以下命令打开它:
open('1.log', encoding='latin-1', 'rU')
答案 1 :(得分:1)
我尝试了几种不同的编码组合,只需将脚本中的编码更改为latin1
,就可以完全了解日志文件,因此行open('1.log', encoding='utf-8', mode='r')
变为{{ 1}}。
答案 2 :(得分:0)
看起来它不是ascii文件。编码测试通常是不准确的。尝试chardet,它将为您检测编码。
然后
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="styles/formula_styles.css">
<script type="text/javascript">
var a, b, c;
function setValues1() {
a = Number(document.getElementById("a").value);
b = Number(document.getElementById("b").value);
c = Number(document.getElementById("c").value);
}
function and() {
setValues1();
result1 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);
result2 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);
document.getElementById('result').innerHTML = "The volume of this cube is " + result1 + " and " + result2;
}
</script>
</head>
<body>
<nav>
<a href="index.html">Home</a> // <a href="levels.html">Grade Levels</a>
</nav>
<div id="container">
<div id="formula">
<input type="text" id="a" placeholder="'A' Variable" />
<br>
<input type="text" id="b" placeholder="'B' Variable" />
<br>
<input type="text" id="c" placeholder="'C' Variable" />
<br>
<input type="button" onclick="and()" value="Calculate!" />
<div id="result">
</div>
</div>
</div>
</body>
</html>
请注意,这可能需要很长时间。在您尝试之前,我建议您先手动循环显示明显的编码。
尝试使用UTF16和UTF32。然后尝试Windows编码。 Here is a list of several encodings.