Как разбить строки элемента в списке и записать его в новый CSV-файл? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть список, который выглядит следующим образом:

['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 голосов
/ 06 мая 2019

Используя простую итерацию.

Ex:

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']
...