朋友说有一个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)