从文本文件复制一系列列并创建新文件

时间:2014-11-04 21:44:38

标签: python parsing text-files

我是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:期望一个字符缓冲区对象

任何帮助都比没有帮助更好。

2 个答案:

答案 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()