【问题标题】:Convert a string inside a list to a list by removing newline character and removing first and last character, in python通过在python中删除换行符并删除第一个和最后一个字符,将列表中的字符串转换为列表
【发布时间】:2020-07-14 15:40:25
【问题描述】:

我有一个列表,我正在尝试将其转换为字典:

temp_list = ['ads_sm\nActive an hour ago\n3,416,227\nm_sg13\nActive a day ago\n0']

在删除所有 \n 字符并将其替换为逗号并删除开头和结尾的所有 ' 字符后,我需要将其转换为更清晰的 list, 这样我就可以将其保存为 字典

temp_list = [ads_sm,Active an hour ago,3,416,227,m_sg13,Active a day ago,0]

字典应如下所示:

{'ads_sm': 'Active an hour ago ', 'm_sg13': 'Active an hour ago'}

到目前为止,我的代码是,这给了我一个空字典

temp_list = ['ads_sm\nActive an hour ago\n3,416,227\nm_sg13\nActive a day ago\n0']
words = [w.replace('\n', ',') for w in temp_list]
status_dictionary = dict(zip(words[::4], words[1::4]))
print(status_dictionary)

【问题讨论】:

  • 为什么最终字典中没有'3,416,227''0'?另外,对一个元素列表进行切片是没有意义的。
  • 你想在\nsplit,不是吗?
  • '3,416,227' 和 '0':我不需要它们..不介意它们是否在最终字典中
  • split on \n
  • 应该从列表中读取密钥还是修复名称?该值是否始终是第二个和倒数第二个元素?

标签: python python-3.x string list dictionary


【解决方案1】:

这可能是一种方式:

temp_list = ['ads_sm\nActive an hour ago\n3,416,227\nm_sg13\nActive a day ago\n0']
splitedlist=[val for val in temp_list[0].splitlines() if not all(i.isdigit() for i in val.replace(',',''))]
dct={k:val for k,val in zip(splitedlist[::2],splitedlist[1::2])} 
#Same as dict(zip(splitedlist[::2],splitedlist[1::2]))

输出

dct
{'ads_sm': 'Active an hour ago', 'm_sg13': 'Active a day ago'}

【讨论】:

  • @Anti_cse51 感谢您的接受,我会问您与 DineshKumar 相同的问题:如果有效,请点赞 :)
【解决方案2】:

这对你有用吗?

temp_list = ['ads_sm\nActive an hour ago\n3,416,227\nm_sg13\nActive a day ago\n0']
sp_list = temp_list[0].split("\n")
x = zip(sp_list[0::2], sp_list[1::2])
print(dict(x))

输出:

{'ads_sm': 'Active an hour ago', '3,416,227': 'm_sg13', 'Active a day ago': '0'}

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多