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

时间:2017-03-25 23:36:51

标签: python list file

而不是像这样定义<div> <ul> <li (click)="retriveExtraMarker(some_latlon)">Place One</li> <li (click)="retriveExtraMarker(some_latlon)">Place Two</li> </ul> </div> <div> <div> <!-- I would like to add more markers dinamically here --> <sebm-google-map [zoom]="zoom" [latitude]="lat" [longitude]="lng"> <sebm-google-map-marker *ngFor="let item of items | async" [latitude]="item.latitude" [longitude]="item.longitude"> </sebm-google-map-marker> </sebm-google-map> </div> </div> ......

documents

...我想从两个不同的txt文件中读取相同的三个句子,第一个文件中的第一个句子,第二个文件中的第2个和第3个句子。

我已经提出了这个代码:

documents = ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"]

但这两种策略产生的# 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) 似乎有不同的格式。我希望第二种策略能够产生与第一种策略相同的输出。

3 个答案:

答案 0 :(得分:1)

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

os.chdir('text_data')
documents = []
for file in glob.glob("*.txt"): # read all txt files in working directory
    documents.extend( line for line in open(file) )

或者甚至可能是一行。

documents = [ line for line in open(file) for file in glob.glob("*.txt") ]

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

...我想从两个不同的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]可能会有所帮助。

希望这会让你重新开始工作: - )