我对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'
答案 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: