используя данные из текстового файла в Python - PullRequest
0 голосов
/ 14 декабря 2011

Я изучаю Python, и теперь у меня возникли некоторые проблемы с чтением и анализом текстовых файлов. Я хочу открыть в python файл .txt, который содержит много строк, и в каждой строке у меня есть один фрукт и его цена.

Я хотел бы знать, как заставить python распознавать свои цены как число (поскольку он распознает как строку, когда я использую readlines()), чтобы затем я мог использовать числа в некоторых простых функциях для вычисления минимальной цены нужно продать фрукты, чтобы получить прибыль.

Есть идеи, как это сделать?

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

Предполагая, что ваши значения разделены пробелом, вы можете прочитать в своем файле список кортежей, используя:

# generator to read file and return each line as a list of values
pairs = (line.split() for line in open("x.txt"))  
# use list comprehension to produce a list of tuples
fruits = [(name, float(price)) for name, price in pairs] 

print fruits
# will print [('apples', 1.23), ('pears', 231.23), ('guava', 12.3)]

Обратите внимание, что float() использовалось для преобразования второго значения (price) из str в число с плавающей запятой.

См. Также: понимание списка и выражение генератора .


Чтобы упростить поиск цен на каждый фрукт, вы можете преобразовать свой список кортежей в диктовку:

price_lookup = dict(fruits)

print price_lookup["apples"]
# will print 1.23

print price_lookup["guava"] * 2
# will print 24.6

См .: dict().

1 голос
/ 14 декабря 2011

Если имя и цена разделены запятой:

with open('data.txt') as f:
  for line in f:
    name, price = line.rstrip().split(',')
    price = float(price)
    print name, price
0 голосов
/ 14 декабря 2011

У меня была такая же проблема, когда я впервые изучал Python из Perl.Perl «сделает то, что вы имеете в виду» (или, по крайней мере, то, что, по вашему мнению, вы имеете в виду), и автоматически преобразует нечто, похожее на число, в число, когда вы пытаетесь использовать его как число.(Я обобщаю, но вы поняли).Философия Python заключается в том, чтобы не случалось так много волшебства, поэтому вы должны выполнить преобразование явно.Вызовите float("12.00") или int("123") для преобразования из строк.

...