在Python中将文本文件读入列表

在Python中将文本文件读入列表,python,list,file,Python,List,File,而不是像这样定义文档 documents = ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"] 。。。我想从两个不同的txt文件中读取相同的三个句子,第一个文件中的第一个句子,第二个文件中的第2和第3个句子 我想出了以下代码: # read txt documents os.chdir('text_data') document

而不是像这样定义
文档

documents = ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"]
。。。我想从两个不同的txt文件中读取相同的三个句子,第一个文件中的第一个句子,第二个文件中的第2和第3个句子

我想出了以下代码:

# read txt documents
os.chdir('text_data')
documents = []
for file in glob.glob("*.txt"): # read all txt files in working directory
    file_content = open(file, "r")
    lines = file_content.read().splitlines()
    for line in lines:
        documents.append(line)

但是这两种策略产生的
文档
的格式似乎不同。我希望第二种策略产生与第一种策略相同的输出。

可以使用
.read().splitlines()
,而不是
.readlines()
。这将把每个文件的内容放入一个列表。

如果我正确理解了您的代码,这是等效的,而且性能更高(不需要将整个文件读入一个字符串,然后拆分为一个列表)

或者甚至一行

documents = [ line for line in open(file) for file in glob.glob("*.txt") ]
。。。我想从两个不同的文本中读同样的三个句子 在第一个文件中包含第一句,以及第2句和第3句的文件 在第二个文件中

将需求直接转化为:

with open('somefile1.txt') as f1:
    lines_file1 = f1.readlines()
with open('somefile2.txt') as f2:
    lines_file2 = f2.readlines()
documents = lines_file1[0:1] + lines_file2[1:3]
FWIW,鉴于您正在做的工作类型,
[fileinput module][1]
可能会有所帮助


希望这能让你重操旧业:-)

。。。怎么了?请尽量具体说明您的问题陈述。为了清晰起见,请进行编辑。我的观点是,您应该显示输出,而不是编写“两种策略产生的
文档”
,这样做:
lines=file\u content.read().splitlines()
。您可以直接在文件处理程序上进行迭代,它可以在行上进行迭代。所以只需
文件内容中的行:
就足够了(尽管您会得到尾随的换行符)。很可能,您只需要
documents.append(file_content.read())
就可以了,而且您根本不需要对该文件进行迭代…堆栈溢出可能与我是新来的@juanpa.arrivillaga重复。我的意思是.readlines()创建的列表的内容可以进一步附加到文档中,但我看到您最近的评论回答了我试图解释的内容。谢谢。您需要颠倒列表中“for”的顺序
with open('somefile1.txt') as f1:
    lines_file1 = f1.readlines()
with open('somefile2.txt') as f2:
    lines_file2 = f2.readlines()
documents = lines_file1[0:1] + lines_file2[1:3]