Автоматическое преобразование строк в числа в Python - PullRequest
1 голос
/ 23 сентября 2009

Я пытаюсь сравнить два списка строк в 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 никогда не приводил строку к int?

извините за мой английский: D

Ответы [ 2 ]

3 голосов
/ 23 сентября 2009

Python никогда не преобразует строку в число, если вы не попробуете что-то вроде:

s = "1.2"
a = float(s)

Итак, я полагаю, что в вашем файле .csv есть строка «1,20091E + 11». Также обратите внимание, что десятичная точка - это кома. Итак, если вы попытаетесь преобразовать его в число с плавающей точкой, преобразование завершится неудачей.

2 голосов
/ 23 сентября 2009

Вам нужен модуль локали для чтения чисел в формате локали (то есть с десятичной запятой, которая используется в (большинстве) частях Европы).

import locale
locale.setlocale(locale.LC_ALL, '')
f = locale.atof("1,20091E+11")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...