LINUX.ORG.RU

Python 3 код перенести на Python 2

 


0

2

Привет, подскажите в чем отличие в данному случае в синтаксисе, нужно чтобы все работало под Python 2. Вот сам код:

#!/usr/bin/python3
import marisa_trie
prefix_data = {l.split()[-1] : l.strip() for l in open('codes.txt')}
trie = marisa_trie.Trie(prefix_data.keys())
def get_descr(phone):
    phone_prefixes = trie.prefixes(phone)
    pref = max(phone_prefixes, key=len)
    if pref == None: return "Unknown " + phone
    return prefix_data[pref]

cur_descr = None
prev_descr = None

output = open('final', 'w')

for line in open('numbers', 'r'):
    cur_descr = get_descr(line)
    if cur_descr != prev_descr:
        output.write(cur_descr)
        output.write('\n')
        prev_descr = cur_descr
    output.write(line)

output.flush()


Если б ты освоил питон, то и вопроса не было бы.

Deleted
()
Ответ на: комментарий от ggrn
 Traceback (most recent call last):
  File "python.py", line 3, in <module>
    prefix_data = {l.split()[-1] : l.strip() for l in open('codes.txt')}
  File "python.py", line 3, in <dictcomp>
    prefix_data = {l.split()[-1] : l.strip() for l in open('codes.txt')}
IndexError: list index out of range
SkySon
() автор топика

Разобрался, спасибо за мотивацию

#!/usr/bin/python
from __future__ import absolute_import
import marisa_trie
from io import open
prefix_data = dict((l.split()[-1], l.strip()) for l in open(u'codes.txt'))
trie = marisa_trie.Trie(prefix_data.keys())
def get_descr(phone):
    phone_prefixes = trie.prefixes(phone)
    pref = max(phone_prefixes, key=len)
    if pref == None: return u"Unknown " + phone
    return prefix_data[pref]
cur_descr = None
prev_descr = None

output = open(u'final', u'w')

for line in open(u'number', u'r'):
    cur_descr = get_descr(line)
    if cur_descr != prev_descr:
        output.write(cur_descr)
        output.write(u'\n')
        prev_descr = cur_descr
    output.write(line)

output.flush()

SkySon
() автор топика
Ответ на: комментарий от SkySon

А почему бы не импортировать из будущего unicode_literals заодно?

Goury ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.