这可能看起来很奇怪,但我基本上有一个csv文件,其值为' 0'在很多细胞中。
我如何在Python中将这些数字转换为0.00而不是0?我在ArcMap中有一个脚本需要将值读取为double而不是short整数,并且' 0'价值真的搞砸了。
我是CSV模块的新手,所以我不知道该怎么做。任何帮助制作脚本转换我的值,以便当我打开新的CSV时,它将读取" 0.00"而不是' 0'非常感谢。
我希望有一些代码可以作为一个例子,但我不知所措。
答案 0 :(得分:1)
这是一个简短的脚本,它将读取CSV文件,将任何数字转换为浮点数,然后再将其写回同一文件。
import csv
import sys
# These indices won't be converted
dont_touch = [0]
def convert(index, value):
if not index in dont_touch:
try:
return float(value)
except ValueError:
# Not parseable as a number
pass
return value
table = []
with open(sys.argv[1]) as f:
for row in csv.reader(f, delimiter=","):
for i in range(len(row)):
row[i] = convert(i, row[i])
table.append(row)
with open(sys.argv[1], "w") as f:
writer = csv.writer(f, delimiter=",")
writer.writerows(table)
如果您有任何不应转换的列,请在dont_touch
数组中指定其索引。
如果你希望它们有两个尾随零,你可以改为使用格式字符串:
return "{:.02f}".format(float(value))
答案 1 :(得分:0)
您可以格式化0然后将其写出来,您可能需要查看适合您的csv的引用(例如,您的编写器对象中可能需要quoting=csv.QUOTE_NONE
):
reader = csv.reader(fr)
writer = csv.writer(fw)
for row in reader:
writer.writerow([f if f != '0' else '{:0.2f}'.format(0) for f in row])