删除一列文字

时间:2015-07-08 07:36:05

标签: python

我对Python完全陌生,但我在其他语言方面有一些脚本经验。我正在尝试编写一个脚本来读取文本文件,其格式如下:

1    52345
2    53
3    -654
4    2342

并将其打印出来:

52345,
53,
-654,
2342,

所以我想删除第一列和空格,并在最后添加一个逗号。

这是我到目前为止所做的,但似乎我试图在文件对象上使用字符串方法。

def remove_first_column(text):
    splitString = text.split(' ')

    splitString.pop(0)


    finalString = "  ".join(
        [item.strip() for item in splitString])

    return finalString

def main():
    print "Type the filename:"
    file_again = raw_input("> ")
    txt = open(file_again)
    for line in txt.split("\n"):
        print(remove_first_column(line))  #py2.5  print remove_first_column(line)

if __name__ == '__main__':
    main()

我得到一个例外,说"属性错误:'文件'对象没有属性' split'

3 个答案:

答案 0 :(得分:1)

txt是一个文件对象,而不是一个字符串。你可以尝试

for line in txt:

而不是

for line in txt.split("\n"):

答案 1 :(得分:1)

是的,当您使用open函数打开文件时,它会返回一个文件对象,您可以遍历文件对象(以获取每一行),但您不能使用file.split('\n')

尝试做 -

for line in txt:
    print(remove_first_column(line))  #py2.5  print remove_first_column(line)

您不需要split,迭代txt文件将返回每次迭代中的每一行。

此外,在您的函数内部,您正在执行 - splitString = text.split(' '),如果字符串在两列之间有多个空格,这可能会导致许多空字符串元素,如 - ['1', '', '', '', '52345'](尽管如此)不会导致您的特定代码出现问题),只是让您知道,您可以执行 - splitString = text.split(),以便按所有空格进行拆分(这会产生类似 - ['1','52345']

的列表

答案 2 :(得分:0)

您无法拆分文件对象:

for line in txt: