Python-'.split'函数无法正常工作

时间:2018-09-29 16:23:41

标签: python

最近,我开始创建一个程序,该程序可以编写和记录我必须做的工作,以保持对我已经完成的工作的控制,以及仍然需要完成的工作。但是,目前我有一个大问题,那就是该程序可以读取已发送到记录了所有内容的文本文件中的数据,但不能使用“ .split”功能。

该程序此部分的代码如下:

def dialog3():
    document = open('homework.txt','r+')
    doc2 = document.readlines()
    print(doc2)
    doc3 = doc2.split(['\n'])
    btn.configure(state=DISABLED)
    btn2.configure(state=DISABLED)
    btn3.configure(state=DISABLED)

伴随以下错误消息:

    doc3 = doc2.split(['\n'])
    AttributeError: 'list' object has no attribute 'split'

3 个答案:

答案 0 :(得分:1)

假设您有一个看起来像这样的文件

abc def ged

adw ret qwer tre....

等等

现在,当我进行阅读行时,指向文件对象的光标将位于第一行。如果执行此操作,file.readlines.split(' ')将在第一行中返回单词列表... readline.split('\n')将返回第一行本身。

由于每行已经被换行,它将返回同一行

答案 1 :(得分:1)

doc2 = document.readlines()
print(doc2)
doc3 = doc2.split(['\n'])

type()中的doc2已经是数组,因为file.readlines()总是返回文件中的行数组。您不能简单地拆分数组。从问题的角度来看,您的文件可能包含\n个转义符,因此也可以在数组中捕获它们。

答案 2 :(得分:0)

readlines()函数返回一个列表,因此您无需再次将其分成几行。

如果您需要进一步拆分,则可以执行类似的操作

flatten = lambda l: [item for sublist in l for item in sublist]
doc3=flatten([l.split('\n') for l in doc2])