鱼C论坛

 找回密码
 立即注册
查看: 2238|回复: 12

[已解决]关于字符串的内列表信息提取的问题

[复制链接]
发表于 2014-11-30 06:47:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大大好我是新鱼友,正在学习小甲鱼老师的Python零基础教程
我现在有一个疑问如果我现在有一个字符串

List_str = '[1, 2, 3, 4, 5]'

如果我想快速提取出一个[1, 2, 3, 4, 5]的列表该怎么操作呢

如果字符串的项数比较小或者有某种规律我可以用笨方法


List_str_pick = list(List_str) #去挑取一个列表应该有的元素和每一个元素的索引值,再append到新list内


或者通过其他办法找出字符串的规律什么的但总之是比较麻烦


我想问一下各位大大有没有什么方法能告诉Python程序我的  List_str  内包含的文本就是一个列表
并让Python把文本内容赋给某一blm达到提取字符串内列表的目的
也就是说怎么让Python明白把List_str 的“引号“去掉后再把其内容赋给某blm


如若不行那便请教各位大大如何
#将
Tedious_list_str = '[1, {"dasj":True, "sfarer":'sdadare', "ob3":'printer'}, 2, 3, ['earet',1,2,3], 4, 5]'
#快速转换为
List = [1, {"dasj":True, "sfarer":'sdadare', "ob3":'printer'}, 2, 3, ['earet',1,2,3], 4, 5]



最佳答案
2014-11-30 09:40:50
eval函数就可以,原理不明白。
会返回新的。 360截图20141130094110135.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-30 09:06:32 | 显示全部楼层
本帖最后由 戴宇轩 于 2014-11-30 09:10 编辑
  1. >>> List_str = '[1, 2, 3, 4, 5]'
  2. >>> type(List_str)
  3. <type 'str'>
  4. >>> List_list = eval(List_str)
  5. >>> type(List_list)
  6. <type 'list'>
  7. >>> List_str
  8. '[1, 2, 3, 4, 5]'
  9. >>> List_list
  10. [1, 2, 3, 4, 5]
  11. >>> for i in List_str:
  12. ...     print(i)
  13. ...
  14. [
  15. 1
  16. ,

  17. 2
  18. ,

  19. 3
  20. ,

  21. 4
  22. ,

  23. 5
  24. ]
  25. >>> for i in List_list:
  26. ...     print(i)
  27. ...
  28. 1
  29. 2
  30. 3
  31. 4
  32. 5
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2014-11-30 09:15:46 | 显示全部楼层
  1. >>> Tedious_list_str = r"""[1, {"dasj":True, "sfarer":'sdadare', "ob3":'printer'}, 2, 3, ['earet',1,2,3], 4, 5]"""
  2. >>> Tedious_list_str
  3. '[1, {"dasj":True, "sfarer":\'sdadare\', "ob3":\'printer\'}, 2, 3, [\'earet\',1,2,3], 4, 5]'
  4. >>> type(Tedious_list_str)
  5. <type 'str'>
  6. >>> List = eval(Tedious_list_str)
  7. >>> List
  8. [1, {'sfarer': 'sdadare', 'dasj': True, 'ob3': 'printer'}, 2, 3, ['earet', 1, 2, 3], 4, 5]
  9. >>> type(List)
  10. <type 'list'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:25:17 | 显示全部楼层
转成原始字符串在套用 eval()函数就行了是吗,看来是我没学的知识呢
"""____"""实际什么作用呢我记得是保留换行用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-30 09:40:50 | 显示全部楼层    本楼为最佳答案   
eval函数就可以,原理不明白。
会返回新的。 360截图20141130094110135.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:44:38 | 显示全部楼层
首选感谢回复自己试了一下
  1. Tedious_list_str = '[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]'
  2. Tedious_list_str_r = r"""[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]"""
  3. print(type(Tedious_list_str_r)) #<class 'str'>
  4. print(Tedious_list_str_r) #Tedious_list_str
  5. List = eval(Tedious_list_str_r)
  6. print(type(List)) #<class 'list'>
  7. print(List) #[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]
  8. a = List[0]
  9. print(a)
复制代码


确实可以达到转换list的功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:46:53 | 显示全部楼层
但是

Tedious_list_str = '[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]'

Tedious_list_str_r = r"""[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]"""
是怎么实现的
鄙人是初学者懂得很少如果能做到用代码Tedious_list_str 到Tedious_list_str_r确实可以

但不知道怎么实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:49:13 | 显示全部楼层
本帖最后由 哲学三信 于 2014-11-30 10:01 编辑

试了一下,如下代码,很奇怪的list还是字符串
  1. Tedious_list_str = '[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]'
  2. Tedious_list_str_r = r"""Tedious_list_str"""
  3. print(type(Tedious_list_str_r)) #<class 'str'>
  4. print(Tedious_list_str_r) #Tedious_list_str
  5. List = eval(Tedious_list_str_r)
  6. print(type(List)) #<class 'str'>
  7. print(List) #[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]
  8. a = List[0]
  9. print(type(a))
  10. print(a)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:50:38 | 显示全部楼层
继续求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 09:57:01 | 显示全部楼层
首选谢2楼和5楼,我的问题是解决了,但解决一个问题又来了好几个问题,但其实都是有关eval原理的问题

  1. Tedious_list_str = '[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5]'
  2. List = eval(Tedious_list_str)
  3. print(type(List)) #<class 'list'>
  4. print(List) #[1, {'dasj': True, 'sfarer': 'sdadare', 'ob3': 123456}, 2, 3, ['earet', 1, 2, 3], 4, 5]
  5. a = List[0]
  6. b = List[1]
  7. print(a, b) #1 {'dasj': True, 'sfarer': 'sdadare', 'ob3': 123456}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 10:11:39 | 显示全部楼层
两个新问题
一:8楼为什么变成str了

二:怎么又成元组了,或者eval能转换成多种形式?
  1. Tedious_list_str = '[1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5], [1,2,3] ,{"mfhijashf":1}'
  2. List = eval(Tedious_list_str)
  3. print(type(List)) #<class 'tuple'>
  4. print(List) #([1, {"dasj":True, "sfarer":"sdadare", "ob3":123456}, 2, 3, ["earet",1,2,3], 4, 5], [1,2,3] ,{"mfhijashf":1})
  5. a = List[0]
  6. b = List[1]
  7. c = List[2]
  8. print('a:', type(a))
  9. print(a, '\n', b, '\n',c)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-30 16:00:16 | 显示全部楼层
本帖最后由 戴宇轩 于 2014-11-30 16:05 编辑
哲学三信 发表于 2014-11-30 09:49
试了一下,如下代码,很奇怪的list还是字符串

第二行错了啊, 这样Tedious_list_str_r等于 'Tedious_list_str' 而不是 Tedious_list_str
如果非要这样的话, 可以用
  1. Tedious_list_str_r = eval(r"""Tedious_list_str""")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-30 16:02:56 | 显示全部楼层
哲学三信 发表于 2014-11-30 09:25
转成原始字符串在套用 eval()函数就行了是吗,看来是我没学的知识呢
"""____"""实际什么作用呢我记得是保 ...

是保留换行, 在任何字符串前面加r代表原始字符串, 就是不把反斜杠当作转义符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表