我有以下列表
mylist = ["'alpha','beta'",'delta','phi']
第一个元素的双引号和单引号的组合阻止我分别正确使用alpha和beta。 当我使用
mylist[1]
我得到了
delta
而不是beta,这就是我想要的
如何将此列表的第一个元素拆分为2个项目并重新插入,以便我在此列表中有4个项目?
在你告诉我不要以这种方式写一个列表之前,要知道它是我已经从
拆分的单行输出"'alpha, beta'"
编辑:你们当中有很多人要求提供构成此列表的代码....我真的无法发布它,因为部分代码需要登录网站访问受限数据。
以下代码解决了我的问题:
mylist = [re.sub('^\W+|\W+$', '', i) for b in map(lambda x:re.split(',', x), mylist) for i in b]
答案 0 :(得分:0)
您可以使用map
:
import re
def split_words(d):
return [re.sub('^\W+|\W+$', '', i) for b in map(lambda x:re.split("(?<='),(?=')", x), d) for i in b]
mylist = [["'alpha','beta'",'delta','phi'], ["'alpha','beta'",'delta','phi, theta']]
final_results = list(map(split_words, mylist))
输出:
[['alpha', 'beta', 'delta', 'phi'], ['alpha', 'beta', 'delta', 'phi, theta']]
答案 1 :(得分:0)
另一个使用正则表达式的人:你可以只findall
字符串中的\w+
字词:
>>> mylist = ["'alpha','beta'",'delta','phi']
>>> [y for x in mylist for y in re.findall("\w+", x)]
['alpha', 'beta', 'delta', 'phi']
或split
其他所有内容\W
,或更具体地[,"' ]
:
>>> [y for x in mylist for y in re.split("\W", x) if y]
['alpha', 'beta', 'delta', 'phi']
>>> [y for x in mylist for y in re.split("[,'\" ]", x) if y]
['alpha', 'beta', 'delta', 'phi']