从.txt文件中删除一些数据,然后将其余数据存储到两个列表中。

时间:2017-07-05 12:14:04

标签: python io

我将数据存储在.txt文件中......

Subset 1    1   350.000 0.096
Subset 1    2   351.000 0.095
Subset 1    3   352.000 0.095
Subset 1    4   353.000 0.097
Subset 1    5   354.000 0.096
Subset 1    6   355.000 0.095
Subset 1    7   356.000 0.097
Subset 1    8   357.000 0.094
Subset 1    9   358.000 0.091
Subset 1    10  359.000 0.091
Subset 1    11  360.000 0.091
Subset 1    12  361.000 0.092
Subset 1    13  362.000 0.091
Subset 1    14  363.000 0.089
Subset 1    15  364.000 0.089
Subset 1    16  365.000 0.090

我想只使用值350, 351...0.096, 0.95,...。因此,首先我需要删除所有Subset 1和数字1,2,3,4...,然后将350, 351...0.096, 0.95,...存储在两个不同的列表中,以便绘制它们。

我试图做的是:

import io
# Load the txt file
text_file = io.open("/home/stagiaire/Bureau/01.Dark Skin.txt","r", 
encoding = "utf-16")   
# Read the lines and then strip 
lines = text_file.readlines()
li = lines.strip(',')
# Delete "susbset1" by replacing it with nothing...
nkia = lines.replace("Subset 1","")

但它不起作用...有关我如何做的任何建议?谢谢。

2 个答案:

答案 0 :(得分:3)

您正在尝试将字符串修改应用于列表。我可以修复你的代码,但让我们采取更优雅(和单行)的方法:

我会阅读这条线&拆分它(没有参数使其像awk一样,它将字段分隔符视为“一个或多个空格或表格”),只保留最后两个字段并将它们转换为浮点数,所有这些都在嵌套列表中理解:

coords = [[float(x) for x in l.split()[-2:]] for l in text_file]

给了我这对情侣名单:

[[350.0, 0.096], [351.0, 0.095], [352.0, 0.095], [353.0, 0.097], [354.0, 0.096], [355.0, 0.095], [356.0, 0.097], [357.0, 0.094], [358.0, 0.091], [359.0, 0.091], [360.0, 0.091], [361.0, 0.092], [362.0, 0.091], [363.0, 0.089], [364.0, 0.089], [365.0, 0.09]]

如果确实需要2个列表,那么,也可以使用列表推导来提取它们:

[c[0] for c in coords][c[1] for c in coords]

答案 1 :(得分:3)

这是一种方法:

import io
# Load the txt file
text_file = io.open("/home/stagiaire/Bureau/01.Dark Skin.txt","r", 
encoding = "utf-16")
# Output lists
list1 = []
list2 = []
# Read the lines and then make lists 
for line in text_file.readlines():
    segments = line.split()
    list1.append(segments[-1])
    list2.append(segments[-2])