我正在尝试使用以下字符串更新我的configuration.ini
文件[Financial Times: Financial-Services]
部分的last_entry_id
:
http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-services%2Ffeed%2F%2Fproduct
<登记/>
这是我的configuration.ini
文件的相应部分:
[Financial Times: Financial-Services]
feed_updated_on =
feed_updated_field = ['updated']
link = http://www.ft.com/rss/companies/financial-services
last_entry_id =
id_field = link
但在我的代码中,当我尝试以下行时:
id_of_first_link = 'http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-services%2Ffeed%2F%2Fproduct'
feed_link['last_entry_id'] = id_of_first_link
我收到错误:
ValueError: invalid interpolation syntax in 'http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-services%2Ffeed%2F%2Fproduct' at position 90
feed_link
是[Financial Times: Financial-Services]
文件中configuration.ini
的引用名称。如何解决这个问题?
答案 0 :(得分:1)
例外是指无效的interpolation syntax
这是因为在Python中你可以使用以下语法插入字符串:
mystring = "Hello, my name is %s"
print(mystring % 'StackOverflow')
我认为在configparser
中的某个时刻,它必须使用这种语法,因此会得到一个无法正确处理的字符串。
有几种方法可以解决这个问题。您可以使用我向您展示的str.replace()
,通过使用双重百分号%
来逃避%%
...
或者您可以尝试使用以下语法提供原始字符串:
id_of_first_link = r'http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-services%2Ffeed%2F%2Fproduct'
在开始单引号之前注意r
。
原始字符串还允许您键入r'C:\Windows\system32'
之类的字符串,而不会出现反斜杠意外转义的字符。