坚持使用Python列表

时间:2013-10-24 00:32:52

标签: python

我是python的新手。上周开始使用它第一次。到目前为止,我一直在迅速提高速度,并在编码方面取得良好进展。

我有一个包含字符串的列表变量(rawData)。

rawData[0:2]

['00:00:10.000000,     500.000000000,       5.00000000,    80.00,\n',
 '00:00:10.002667,     500.000000000,       5.00000000,    80.00,\n']

我正在努力使用现有数据执行以下操作:

rawData[0:2]

[['00:00:10.000000', '500.0', '5.0', '80.00'],
 ['00:00:10.002667', '500.0', '5.0', '80.00']]

感谢您的时间。我很感激。

2 个答案:

答案 0 :(得分:1)

假设您有此列表

>>> L = ['00:00:10.000000,     500.000000000,       5.00000000,    80.00,\n',
...  '00:00:10.002667,     500.000000000,       5.00000000,    80.00,\n']

您可以将每一行拆分为像这样的列表

>>> [item.split() for item in L]
[['00:00:10.000000,', '500.000000000,', '5.00000000,', '80.00,'], ['00:00:10.002667,', '500.000000000,', '5.00000000,', '80.00,']]

但是你仍然需要进一步处理,并且由于每个字段的处理都不同,所以在列表理解中尝试完成所有这些都是尴尬和混乱的。相反,首先编写一个辅助函数。我们称之为“process_item

>>> def process_item(item):
...     return item.split()
... 
>>> [process_item(item) for item in L]
[['00:00:10.000000,', '500.000000000,', '5.00000000,', '80.00,'], ['00:00:10.002667,', '500.000000000,', '5.00000000,', '80.00,']]

现在,您可以更好地向process_item添加一些代码来处理您的各个字段

>>> def process_item(item):
...     f1, f2, f3, f4 = item.split()
...     f1 = f1.rstrip(',')
...     f2 = f2.rstrip(',') # more code needed here
...     f3 = f3.rstrip(',') # more code needed here
...     f4 = f4.rstrip(',')
...     return [f1, f2, f3, f4]

让我们来看看如何修复f2和f3

>>> f2 = '500.000000000'
>>> f2[:f2.find('.')+2]
'500.0'

但如果f2

中没有.,你就不想这样做了
>>> f2 = '500'
>>> f2[:f2.find('.')+2]
'5'

因此,您需要使用if进行测试。现在把它们放在一起

>>> def process_item(item):
...     f1, f2, f3, f4 = item.split()
...     f1 = f1.rstrip(',')
...     f2 = f2.rstrip(',')
...     f3 = f3.rstrip(',')
...     f4 = f4.rstrip(',')
...     if '.' in f2:
...         f2 = f2[:f2.find('.')+2]
...     if '.' in f3:
...         f3 = f3[:f3.find('.')+2]
...     return [f1, f2, f3, f4]
... 
>>> [process_item(item) for item in L]
[['00:00:10.000000', '500.0', '5.0', '80.00'],
 ['00:00:10.002667', '500.0', '5.0', '80.00']]

答案 1 :(得分:0)

splitbasestring所有实例拥有的方法,它将字符串转换为字符串列表,在给定字符上进行拆分。 rstrip将删除最右侧出现的字符(删除尾随逗号)。尝试这样的事情:

[ x.strip().rstrip(',').split(',') for x in rawData ]