Python:从列表中删除空格和'\ n'

时间:2013-01-10 16:20:53

标签: python list

我正在尝试删除空格并从列表中输入,我需要将其作为坐标导入。然而,这似乎不起作用。给出以下错误:

AttributeError: 'list' object has no attribute 'strip'

目前我仍然在考虑删除这些空格(首先必须删除这些空格,然后输入将会跟随)。

有没有人有任何建议,为什么这不起作用?

代码如下:

# Open a file
Bronbestand = open("D:\\Documents\\SkyDrive\\afstuderen\\99 EEM - Abaqus 6.11.2\\scripting\\testuitlezen4.txt", "r")
headerLine = Bronbestand.readline()
valueList = headerLine.split(",")
#valueList = valueList.replace(" ","")

xValueIndex = valueList.index("x")
yValueIndex = valueList.index("y")
#xValueIndex = xValueIndex.replace(" ","")
#yValueIndex = yValueIndex.replace(" ","")

coordList = []

for line in Bronbestand.readlines():
    segmentedLine = line.split(",")
    coordList.append([segmentedLine[xValueIndex], segmentedLine[yValueIndex]])

coordList2 = [x.strip(' ') for x in coordList]

print coordList2

“Bronbestand”如下:

id,x,y,
      1,  -1.24344945,   4.84291601
      2,  -2.40876842,   4.38153362
      3,  -3.42273545,    3.6448431
      4,  -4.22163963,   2.67913389
      5,   -4.7552824,   1.54508495
      6,  -4.99013376, -0.313952595
      7,   -4.7552824,  -1.54508495
      8,  -4.22163963,  -2.67913389
      9,  -3.42273545,   -3.6448431

先谢谢大家的帮助!

6 个答案:

答案 0 :(得分:4)

看起来你的问题就在这里。 append()方法将单项添加到列表中。如果将列表附加到列表中,则会获得列表列表。

coordList.append([segmentedLine[xValueIndex], segmentedLine[yValueIndex]])

有两种方法可以解决这个问题。

# Append separately
coordList.append(segmentedLine[xValueIndex])
coordList.append(segmentedLine[yValueIndex])

# Use extend()
coordList.extend([segmentedLine[xValueIndex], segmentedLine[yValueIndex]])

或者,如果你想要一个列表列表,你需要迭代两个级别。

coordList2 = [[x.strip(' ') for x in y] for y in coordList]

答案 1 :(得分:1)

import csv
buff = csv.DictReader(Bronbestand)

result = []

for item in buff:
    result.append(dict([(key, item[key].strip()]) for key in item if key])) # {'y': '-3.6448431', 'x': '-3.42273545', 'id': '9'}

您的数据有效逗号分隔值(CSV)尝试使用本机python csv解析器。

答案 2 :(得分:0)

coordList是两元素列表的列表。

如果您希望这样,那么strip行应为:

coordList2 = [[x[0].strip(' '), x[1].strip(' ')] for x in coordList]

答案 3 :(得分:0)

coordList这里有2个级别,所以你应该做类似的事情:

coordList2 = [[a.strip(' '), b.strip(' ')] for a, b in coordList]

但是比ab更具描述性的名称可能会很好!

答案 4 :(得分:0)

for line in Bronbestand.readlines():
    segmentedLine = line.split(",")
    coordList.append(segmentedLine[xValueIndex])
    coordList.append(segmentedLine[yValueIndex])

之前您要将列表附加到coordList,而不是字符串,因为有额外的[]对。

这意味着列表理解中的xcoordList2 = [x.strip(' ') for x in coordList])是一个列表,没有strip()方法。

答案 5 :(得分:0)

您要将列表附加到coordLis

coordList.append([segmentedLine[xValueIndex], segmentedLine[yValueIndex]])

更好地使用extend()。例如:

In [84]: lis=[1,2,3]

In [85]: lis.append([4,5])

In [86]: lis
Out[86]: [1, 2, 3, [4, 5]]  # list object is appended

In [87]: lis.extend([6,7])     #use extend()

In [88]: lis
Out[88]: [1, 2, 3, [4, 5], 6, 7]     #6 and 7 are appended as normal elements