首页 > 解决方案 > 将 Python3 转换为 Python2

问题描述

我正在尝试finviz在 Python 2 的代码中使用包(为 python 3 编写)。导入时出现 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

finviz的 API 在这里,这部分在screener.py

标签: python-3.xpython-2.7syntax-errorconverters

解决方案


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()的文档


推荐阅读