python - 将包含 unicode 的字符串传递给 RESTful API

标签 python api rest unicode

我正在针对 RESTful API 发起 3 个单独的查询(我使用的是 python/urllib2/pandas),每个查询包含以下字符串变体之一:

(1) 'Caveolin-1 suppresses Human Immunodeficiency Virus-1 replication by inhibiting acetylation of NF-\xce\xbaB'

(2) 'Caveolin-1 suppresses Human Immunodeficiency virus-1 replication by inhibiting acetylation of NF-κB'

(3) 'Caveolin-1 suppresses Human Immunodeficiency virus-1 replication by inhibiting acetylation of NF

结果是:

(1) 不返回任何结果(当从 python 以编程方式完成时)

(2) 工作并返回预期结果 - 匹配记录(使用 Chrome 插件手动触发查询以进行 RESTful API 调用,然后将字符串按原样粘贴到 API 调用的适当部分)

(3)与(2)的作用相同

由于我拥有源数据并且正在通过从数据帧读取字符串以编程方式从 python 执行 (1) 操作,因此有什么方法可以对源数据中的 unicode 字符执行某些操作(不知道是什么)(我猜这就是 '\xbaB' 等)使它们可以传递给 API?根据上述,'\xce\xbaB' 似乎是 'κB' 的编码。

或者这就是我必须查看 API 文档的东西(我认为该文档不存在......)。

如果这很难/更容易 - 在传递查询之前从字符串中删除任何 unicode 字符的最佳方法是什么(即回退到 (3))?

提前致谢!

REF:我正在从 python 执行以下命令来使用 API

api_call = 'http://some_api/index:ABCDE?query=title(' + str(title_string) + ')'
headers = {'APIKey': API_key, 'accept':'text/xml, application/atom+xml'}
request = urllib2.Request(api_call, headers = headers, )
response = urllib2.urlopen(request,'' , 30)

return response.read()

最佳答案

\xce 和\xba 分别是十六进制值 ce 和 ba 的字符。如果不了解更多关于如何与 API 对话或它期望什么的信息,我认为您可以执行类似的操作来使字符串可以通过:

>>> urllib.quote('an Immunodeficiency Virus-1 replication by inhibiting acetylation of NF-\xce\xbaB')
'an%20Immunodeficiency%20Virus-1%20replication%20by%20inhibiting%20acetylation%20of%20NF-%CE%BAB'

编辑:

通常在 python 中,这就是我向 URL 添加参数的方式:

params = {'query' : 'title(' + title_string + ')'}
api_call = 'http://some_api/index:ABCDE?' + urllib.urlencode(params)

因此,我倾向于这一点,而不是我之前的 urllib.quote 建议(我认为如果 title_string 是路径的一部分,则该建议将适用),但我不确定 title_string 中的十六进制值是否足够。我认为这取决于服务器端的处理方式。

关于python - 将包含 unicode 的字符串传递给 RESTful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374081/

相关文章:

ruby-on-rails - 禁用设计登录重定向

windows - 是否值得记住windows API "language"

wcf - 强制WCF在进入实际函数之前对每个请求调用一个方法

python - 如何使用字典更新对象的成员?

python - 对不同大小的浮点值执行算术

python - 如何只读取前两个数字? python +串口

python - 计算每个键的唯一值的有效方法

javascript - 当我的 API key 在 .gitignore 文件中时,如何从 git 部署到 heroku?

java - 从服务异常中检索 Spring Integration 中的消息

Java REST - 找不到 404 资源