繁体   English   中英

如何在python中的字符串中获取2个字符之间的所有字符

[英]How to get all characters between 2 characters in a string in python

我正在尝试从网站上抓取一些数据,下面是我设法得到的一个很长的字符串。

var playerlist=["Roger Federer", "Rainer Schuettler", "Dominik Hrbaty", "Thomas Muster", "Andy Roddick", "Nikolay Davydenko", "Tommy Haas", "Jarkko Nieminen", "Arnaud Clement", "Ivan Ljubicic", "David Ferrer", "Nicolas Massu", "Tommy Robredo", "Lleyton Hewitt", "Filippo Volandri", "Olivier Rochus", "Kevin Kim", "Juan Ignacio Chela", "Juan Carlos Ferrero", "Jimmy Connors", "Mikhail Youzhny", "Ruben Ramirez Hidalgo", "Rafael Nadal"]

上面不是一个javascript列表,它是一个字符串。

我想从该字符串创建所有玩家名称的列表。 因此,我必须提取“”之间的所有子字符串并将其添加到列表中。 另外,如果我能以某种方式将该字符串转换为列表或数组,那就太好了。

有人可以建议我们如何在python中做到这一点吗?

您可以使用ast.literal_eval

>>> s = 'var playerlist=["Roger Federer", "Rainer Schuettler", "Dominik Hrbaty", "Thomas Muster", "Andy Roddick", "Nikolay Davydenko", "Tommy Haas", "Jarkko Nieminen", "Arnaud Clement", "Ivan Ljubicic", "David Ferrer", "Nicolas Massu", "Tommy Robredo", "Lleyton Hewitt", "Filippo Volandri", "Olivier Rochus", "Kevin Kim", "Juan Ignacio Chela", "Juan Carlos Ferrero", "Jimmy Connors", "Mikhail Youzhny", "Ruben Ramirez Hidalgo", "Rafael Nadal"]'
>>> import ast
>>> start = s.index('[')
>>> ast.literal_eval(s[start:])
['Roger Federer', 'Rainer Schuettler', 'Dominik Hrbaty', 'Thomas Muster', 'Andy Roddick', 'Nikolay Davydenko', 'Tommy Haas', 'Jarkko Nieminen', 'Arnaud Clement', 'Ivan Ljubicic', 'David Ferrer', 'Nicolas Massu', 'Tommy Robredo', 'Lleyton Hewitt', 'Filippo Volandri', 'Olivier Rochus', 'Kevin Kim', 'Juan Ignacio Chela', 'Juan Carlos Ferrero', 'Jimmy Connors', 'Mikhail Youzhny', 'Ruben Ramirez Hidalgo', 'Rafael Nadal']

正如史蒂夫(Steve)在评论中提到的那样,最好使用json.loads

>>> import json
>>> json.loads(s[start:])
[u'Roger Federer', u'Rainer Schuettler', u'Dominik Hrbaty', u'Thomas Muster', u'Andy Roddick', u'Nikolay Davydenko', u'Tommy Haas', u'Jarkko Nieminen', u'Arnaud Clement', u'Ivan Ljubicic', u'David Ferrer', u'Nicolas Massu', u'Tommy Robredo', u'Lleyton Hewitt', u'Filippo Volandri', u'Olivier Rochus', u'Kevin Kim', u'Juan Ignacio Chela', u'Juan Carlos Ferrero', u'Jimmy Connors', u'Mikhail Youzhny', u'Ruben Ramirez Hidalgo', u'Rafael Nadal']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM