我是Python的新手,我正在为一些声纳文件做一些数据解析,这些声纳的信息比我处理数据所需的信息多。我找到了这个代码,我试图操纵它来实现我的目标。我只需要前三列信息,最后100列以上是不需要的无关数据。
f = open("ADV125cm.txt", "r")
g = open("ADV125cm_fixed.txt", "w")
for line in f:
if line.strip():
g.write("\t".join(line.split(0,53)[1:]) + "\n")
f.close()
g.close()
我收到了这个错误代码,我不知道这意味着什么:
TypeError:期望一个字符缓冲区对象
任何帮助都比没有帮助更好。
答案 0 :(得分:1)
你得到TypeError: expected a character buffer object
,因为string.split期望删除一串字符。您正在通过0, 53
。可能你会对切片操作感到困惑。如果您想获得一行的前53个列,则需要line[:53]
。应用此更改后,您的for
循环代码将变为:
for line in f:
if line.strip():
g.write("\t".join(line[:53]) + "\n")
但是,如果您想要的是前导和尾随空白字符被剥离的每一行的前53个列,则代码可以像这样重构:
for line in f:
g.write(line.strip()[:53] + '\n')
答案 1 :(得分:0)
我认为您的错误在于如何使用.split()。我没有这些文件所以我无法确定,但这不是正确的用法。做到这一点的方法是:
f = open("ADV125cm.txt", "r")
g = open("ADV125cm_fixed.txt", "w")
for line in f:
if line.strip():
g.write(line[:52]+ "\n")
f.close()
g.close()