Конвертировать Python3 в Python2 - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь использовать пакет finviz (написанный для python 3) в моих кодах на Python 2. При импорте я получаю SyntaxError:

    values = f'tickers: {tuple(self._tickers)}\n' \
                                                ^
SyntaxError: invalid syntax

В библиотеке такой код выглядит следующим образом:

def __repr__(self):
    """ Returns a string representation of the parameter's values. """

    values = f'tickers: {tuple(self._tickers)}\n' \
             f'filters: {tuple(self._filters)}\n' \
             f'rows: {self._rows}\n' \
             f'order: {self._order}\n' \
             f'signal: {self._signal}\n' \
             f'table: {self._table}\n' \
             f'table: {self._custom}'

    return values

* API 1008 * здесь здесь , а эта часть в screener.py

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Вы можете заменить f-строки следующим форматом:

f'{x} {y}' == '{}, {}!'.format(x, y)

Но, пожалуйста, не делайте этого!Жизнь Python 2 окончена.После 2020 года он не будет получать обновлений, даже в целях безопасности. Лучше просто переписать все, что у вас есть, в Python 2 для Python 3.

2 голосов
/ 22 мая 2019

Python f строк не были представлены до 3.6.

2.x-совместимый способ интерполяции строк с похожим синтаксисом использует str.format ().

s = '{greeting}, {place}!'.format(greeting='Hello', place='World')
print s
>>> 'Hello, World!'

Или вот как str.format может выглядеть в вашем примере:

values = ('tickers: {tickers}\n'
          'filters: {filters}\n'
          'rows: {rows}\n'
          'order: {order}\n'
          'signal: {signal}\n'
          'table: {table}\n'
          'table: {custom}'
)

values.format(
    tickers=tuple(self._tickers),
    filters=tuple(self._filters),
    rows=self._rows,
    order=self._order,
    signal=self._signal,
    table=self._table,
    custom=self._custom,
)

Вот документация для str.format ()

...