我试图在Python 2的代码中使用finviz
包(为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是here,此部分位于screener.py
答案 0 :(得分:2)
Python的f strings直到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,
)
Here's the documentation for str.format()
答案 1 :(得分:2)
您可以将f字符串替换为以下格式:
f'{x} {y}' == '{}, {}!'.format(x, y)
但是请不要! Python 2的生命结束了。到2020年之后,即使是出于安全性考虑,它也不会再有任何更新。最好将Python 2中的内容重写为Python 3。