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 + '-')
我该怎么做才能让Python始终把字符串当作字符串,而不是转换成整数呢?
抱歉我的英语不好 :D
2 个回答
2
你需要使用locale模块来读取以地区格式表示的数字(也就是在欧洲大部分地方使用的小数点逗号)。
import locale
locale.setlocale(locale.LC_ALL, '')
f = locale.atof("1,20091E+11")
3
Python 不会自动把字符串变成数字,除非你尝试像下面这样做:
s = "1.2"
a = float(s)
所以我猜你的 .csv 文件里有一个字符串 "1,20091E+11"。另外要注意的是,这里的小数点是用逗号表示的。因此,如果你尝试把它转换成浮点数(小数),这个转换就会失败。