2018/8/9-读取txt文件将所有数据四舍五入写入txt

朋友说有一个ascii文件,应该是司徒文件,不同的颜色是不同的数字这种。朋友本想放到excel里打开,然后设置单元格式,四舍误入,但是就出现全都是9999,显示不出来其他的数值。所以我就用python弄一下。ascii数据我用TXT打开,并以这种格式保存。

import sys
result=[]
with open("...\Desktop\\test.txt") as f:
	for line in f:
		result.append(list(line.strip('\n').split(',')))
print(result)

按行读取进来,因为python的四舍五入不是我们理解的四舍五入,所以找了一个别人写的代码,可以是我们理解的那种四舍五入,会不遇到0.5进一。

def roundUp(value,decDigits=0):
    result = str(value).strip()
    if result != '':
        zeroCount = decDigits
        indexDec = result.find('.')
        if indexDec > 0:
            zeroCount = len(result[indexDec + 1:])
            if zeroCount > decDigits:
                if int(result[indexDec + decDigits + 1]) > 4:
                    result = str(value + pow(10,decDigits * -1))
                #存在进位的可能,小数点会移位
                indexDec = result.find('.')
                result = result[:indexDec + decDigits + 1]
                zeroCount = 0
            else:
                zeroCount = decDigits - zeroCount
        else:
            result += '.'
        for i in range(zeroCount):
            result += '0'
    return result

数据存在list里,所以写了个for循环来四舍五入

lll=[]
for j in range(6,len(result)):
    ll=[] 
    for i in range(len(result[j][0].split(' '))-1):
        aa=int(float(roundUp(float(result[j][0].split(' ')[i]))))
        ll.append(aa)
    lll.append(ll)

最后数据在lll这个list里,再将它写入csv。也是找了一个。

import csv
import codecs
def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表.
    file = open(filename,'a')
    for i in range(len(data)):
        s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择
        s = s.replace("'",'').replace(',','') +'\n'   #去除单引号,逗号,每行末尾追加换行符
        file.write(s)
    file.close()
    print("保存文件成功") 
text_save('C:\\Users\\li_x\\Desktop\\tt.txt',lll)

猜你喜欢

转载自blog.csdn.net/Einsam0/article/details/81565724