如何从字符串生成python字典?

2024-10-02 08:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从这个网站收集蛋白质序列ID:https://www.uniprot.org/

我编写了以下代码:


url = 'https://www.uniprot.org/uploadlists/'

params = {
'from': 'ID',
'to': 'UPARC',
'format': 'tab',
'query': 'P00766    P40925'

}

data = urllib.parse.urlencode(params)
data = data.encode('utf-8')
req = urllib.request.Request(url, data)
with urllib.request.urlopen(req) as f:
   response = f.read()
   string_it = (response.decode('utf-8'))
print(string_it)

打印结果字符串时:

我得到的输出如下所示:

From    To
P00766  UPI000011047C
P40925  UPI0000167B3E

如何将其转换为字典


Tags: httpsorgidurldataresponserequestwww
2条回答

基本上,只需适当地拆分并使用字符串中的值。代码如下:

string_list = string_it.split("\n")
string_list = [i for i in string_list if i!=""]
dict_values = {}
for i in string_list[1:]:
    dict_values[i.split("\t")[0]] = i.split("\t")[1]
    
dict_values

输出为:

{'P00766': 'UPI000011047C', 'P40925': 'UPI0000167B3E'}

代码演练:

  • 最初,根据新行拆分字符串
  • 这通常会导致一个空条目。所以,去掉这个
  • 初始化字典
  • 循环行,忽略第一个条目,因为它只是FromTo
  • 基于\t分隔符拆分它,并将值添加到字典中

我相信你的弦是这样的:

string_it = """
From    To
P00766  UPI000011047C
P40925  UPI0000167B3E
"""

您可以使用splitlines()分割所有行。然后再次使用split()分割单行

new_dict = {}
for line in string_it.splitlines():
  if line == "":
    continue
  new_dict[line.split()[0]] = line.split()[1]

new_dict

相关问题 更多 >

    热门问题