在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]