2017-05-18 1 views
1

내 입력은내가 csv 파일에 4 소수점 개까지 소수점 값을 갖는 4 열을 반올림 할

status,avgMeasuredTime,avgSpeed,extID,medianMeasuredTime,TIMESTAMP,vehicleCount,_id,REPORT_ID,Lat1,Long1,Lat2,Long2,Distance between 2 points,duration of measurements,ndt in kmh 
OK,74,50,668,74,1406859600,5,20746220,158324,56.23172069428216,10.104986076057457,56.23172069428216,56.22579478256016,1030,52,71 
OK,926,4,981,926,1412098500,0,28060227,210173,56.20913963031665,10.246642527612721,56.20913963031665,56.2026461982616,1106,88,45 

예상 출력 :

status,avgMeasuredTime,avgSpeed,extID,medianMeasuredTime,TIMESTAMP,vehicleCount,_id,REPORT_ID,Lat1,Long1,Lat2,Long2,Distance between 2 points,duration of measurements,ndt in kmh 
OK,74,50,668,74,1406859600,5,20746220,158324,56.2317,10.1050,56.2317,56.2258,1030,52,71 
OK,926,4,981,926,1412098500,0,28060227,210173,56.2091,10.2466,56.2091,56.2026,1106,88,45 

당신은 내가 반올림 할 볼 수 있듯이 10, 11, 12, 13 열.

도와주세요. 미리 감사드립니다.

답변

2

AWK 방법 :

awk 'BEGIN{FS=OFS=","}NR>1{for(i=NF-3;i>NF-7;i--) $i=sprintf("%.4f",$i)}1' file 

출력 :

status,avgMeasuredTime,avgSpeed,extID,medianMeasuredTime,TIMESTAMP,vehicleCount,_id,REPORT_ID,Lat1,Long1,Lat2,Long2,Distance between 2 points,duration of measurements,ndt in kmh 
OK,74,50,668,74,1406859600,5,20746220,158324,56.2317,10.1050,56.2317,56.2258,1030,52,71 
OK,926,4,981,926,1412098500,0,28060227,210173,56.2091,10.2466,56.2091,56.2026,1106,88,45 

for(i=NF-3;i>NF-7;i--) - 엔드

에서 4 필드부터 4 개 필드를 반복

: 컬럼의 수는 항상 정적 인 경우 당신은 자신의 위치 번호로 직접 액세스 할 수 있습니다

awk 'BEGIN{FS=OFS=","}NR>1{for(i=10;i<=13;i++) $i=sprintf("%.4f",$i)}1' file 

당신이 파이썬 접근하려면 - 여기에 우리가 간다 :

with open("yourfile", 'r') as f: 
    for k,l in enumerate(f.read().splitlines()): 
     if k > 0: 
      items = l.split(',') 
      items[-4:-8:-1] = ["%.4f" % float(i) for i in items[-4:-8:-1]] 
      l = ','.join(items) 
     print(l) 

출력은 동일합니다

+0

고마워요! 완벽하게 작동합니다! :) – Mikasa

+0

@Roshnirajan, 파이썬 접근법을 추가했습니다. 원한다면. 그것도 잘 작동해야합니다 – RomanPerekhrest

+1

@ 에드몬트, 특히 당신을 위해 메모를 추가했습니다 (OP가 이미 그의 결정을 내렸기 때문에) – RomanPerekhrest

관련 문제