在Python中自动字符串到数字转换
我想比较python中两个字符串列表。一些字符串是数字,但我不想将它用作数字,仅用于字符串比较。在Python中自动字符串到数字转换
我从文件中读取字符串,并把它们像这样的列表:
def main():
inputFileName = 'BateCarteira.csv'
inputFile = open(inputFileName, "r")
bankNumbers = []
for line in inputFile:
values = line[0:len(line)-1].split(';');
if (len(values[0]) > 3):
bankNumbers.append(''+values[0])
然而,当我尝试打印的数量,它打印,如:
1,20091E + 11
用于印刷代码:
print 'not in the list: ' + bankNumber
outputFile.write(bankNumber + '-')
我能做些什么使蟒蛇从来铸字符串一个int?
对不起我的英语:d
的Python从来没有转换字符串到数字,除非你尝试类似:
s = "1.2"
a = float(s)
所以我想,你的.csv文件具有字符串“1, 20091E + 11“。还要注意小数点是昏迷。所以,如果您尝试将其转换为浮点数,则转换将失败。
这样的声音是正确的。我怀疑输入文件有意想不到的值。一些地区如德语和法语使用,因为。数量。 – UberAlex 2009-09-22 20:44:46
你可能想看看标准的“locale”库模块。 – 2009-09-22 21:22:20
是的,这是正确的... atof函数也有帮助。 该语言是葡萄牙语。 – 2009-09-23 21:58:52
您需要使用区域设置模块读取区域设置格式的数字(即使用欧洲(大部分)部分使用的十进制逗号)。
import locale
locale.setlocale(locale.LC_ALL, '')
f = locale.atof("1,20091E+11")
csv文件对于转换为1,20091E + 11的值有什么作用?听起来你有一个比Int更大的值,它正在变成一个Float。 – jmucchiello 2009-09-22 20:36:40
如果更改打印代码,如下所示: 'print'不在列表中:'+ bankNumber,type(bankNumber)' 它将打印bankNumber值的类型。我预测它会打印“str”,告诉你它实际上是一个字符串类型;我预测如果你查看CSV文件,你会看到字符串“1,20091E + 11”。 Python不会在不询问你的情况下将字符串转换为float,但这不是我期望Python在打印float时使用的格式。 – steveha 2009-09-22 23:02:23