首页 > 解决方案 > 如何从浮点数转换为整数到字符串?以 10 为底的 int() 的无效文字:'x'

问题描述

如何将 float 转换为 int 到字符串?

with open(DATA_DIR+'/test.csv', 'r') as inp:
reader = csv.DictReader(inp, delimiter=',',fieldnames = ['Id', 'Target'])
for row in csv.reader(inp):
text_file.write("Text "+str(int(row[1])))

错误:ValueError: invalid literal for int() with base 10: '323.0'

标签: pythonpython-3.xstringcsv

解决方案


编辑:CSV 解析器已经在读取您尝试转换为字符串的数据。该字符串具有不会转换为 int 的小数点值。它会将其转换为浮动。

这里有两种方法可以做到这一点:

  1. 只需拆分字符串并使用整数部分
  2. 在你的例子中text_file.write('Text {:.0f}'.format(float(row[1]))

使用第二种方法,您基本上将其转换为浮点数,此后您不关心小数点右侧的任何内容。所以.0f表示您不需要小数点后的任何内容,包括.. 可以在下面粘贴的链接中了解有关此格式的更多信息。

随着您深入挖掘,您应该继续使用type()来识别传入的数据,然后再决定如何处理它。

原始部分:您不必转换数据来实现您想要的。最后,您希望将文件作为字符串写入文件。如果你从 csv 得到的是一个浮点数,那么你可以简单地将你的字符串格式化为

write_line = 'Text {:06.2f}'.format(row[1])
text_file.write(write_line)

当然,你可以压缩这两条线。python的文档中有更多信息 - https://docs.python.org/3/tutorial/inputoutput.html


推荐阅读