如何拆分列表中元素的字符串并将其写入新的csv文件?

时间:2019-05-06 11:17:58

标签: python list file csv

我有一个看起来像下面的列表:

['PSHELL       102  156800    1.55  156800      1.  156800\n',
 'PSHELL       103  143120    1.55  143120      1.  143120\n',
 'PSHELL       104  143120    1.55  143120      1.  143120\n',
 'PSHELL       105  114700     0.7  114700      1.  114700\n',
 'PSHELL       106  114700     0.7  114700      1.  114700\n',
 'PSHELL       107  114700     1.3  114700      1.  114700\n']

我想删除列表中每个元素的最后三个字符串。并用不同的值填充它。

例如:删除156800 1. 156800 \ n,对每个元素使用相同的方法。并在那里添加新值。

我期望得到以下结果:

['PSHELL       102  156800    1.55  1.085 2.015
 'PSHELL       103....]

Here 1.085= 1.55-(1.55 x 0.3)
     2.015= 1.55+(1.55 x 0.3)

I tried achieving this by converting my list to dataframe, but it is not allowing me to do above math calculation.

1 个答案:

答案 0 :(得分:0)

使用简单的迭代。

例如:

data = ['PSHELL       102  156800    1.55  156800      1.  156800\n',
 'PSHELL       103  143120    1.55  143120      1.  143120\n',
 'PSHELL       104  143120    1.55  143120      1.  143120\n',
 'PSHELL       105  114700     0.7  114700      1.  114700\n',
 'PSHELL       106  114700     0.7  114700      1.  114700\n',
 'PSHELL       107  114700     1.3  114700      1.  114700\n']

result = []
for i in data:
    val = i.strip().split()[:-3]        #Remove last 3 elements using list slicing. 
    lVal = float(val[-1])
    val += [str(lVal - (lVal * 0.3)), str(lVal + (lVal * 0.3))]  #Add new values
    result.append("       ".join(val))   #Form String. 

输出:

['PSHELL       102       156800       1.55       1.085       2.015',
 'PSHELL       103       143120       1.55       1.085       2.015',
 'PSHELL       104       143120       1.55       1.085       2.015',
 'PSHELL       105       114700       0.7       0.49       0.91',
 'PSHELL       106       114700       0.7       0.49       0.91',
 'PSHELL       107       114700       1.3       0.91       1.69']