Python中的字符串自动转为数字

1 投票
2 回答
4767 浏览
提问于 2025-04-15 14:31

我正在尝试在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"。另外要注意的是,这里的小数点是用逗号表示的。因此,如果你尝试把它转换成浮点数(小数),这个转换就会失败。

撰写回答