python3中ConfigParser中的ValueError

python3中ConfigParser中的ValueError,python,configparser,Python,Configparser,我正在尝试更新我的配置.ini文件,[金融时报:金融服务]节的最后一个条目\u id带有以下字符串:http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-服务%2Ffeed%2F%2Fproduct 这是我的configuration.ini文件的相应部分: [Financial Times: Financial-

我正在尝试更新我的
配置.ini
文件,
[金融时报:金融服务]
节的
最后一个条目\u id
带有以下字符串:

http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-服务%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\u link
configuration.ini
文件中
[金融时报:金融服务]
的参考名称。如何解决此问题?

异常指的是无效的
插值语法

这是因为在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'
,而不会意外地使用反斜杠转义字符。

这听起来是随机的,但您可以尝试
id\u of_first\u link=id\u of_first\u link。在将其放入字典之前替换('%,'%')
,看看会发生什么?它是有效的!但是字符串没有变化。为什么会这样?以下是替换函数后的新字符串:
http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-服务%2Ffeed%2F%2Fproduct
百分比符号有特殊的含义,将它们放两次似乎可以让它们消失。非常好用!谢谢。由于程序直接存储值
http://www.ft.com/cms/s/0/46858280-36f4-11e6-a780-b48ed7b6126f.html?ftcamp=published_links%2Frss%2Fcompanies_financial-服务%2Ffeed%2F%2Fproduct
位于第一个链接的
id\U中
,我找不到一种方法将其转换为原始字符串。我尝试了\u first\u link.encode('string-escape')的
id\u,但它给了我错误
LookupError:未知编码:string-escape