我是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']]
感谢您的时间。我很感激。
答案 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)
split
是basestring
所有实例拥有的方法,它将字符串转换为字符串列表,在给定字符上进行拆分。 rstrip
将删除最右侧出现的字符(删除尾随逗号)。尝试这样的事情:
[ x.strip().rstrip(',').split(',') for x in rawData ]