我有一个动态创建的字符串集,该字符串集用;
分隔,现在我想将它们转换为类似的数组
st = "app; map; 'better tap'; nima;"
st_n = st.split(';')
print(st_n)
这很好用,直到,只有一个词像app
,但是当有一个'better tap'
(我得到很多)时,它会将它们包装起来在额外的""
中。我该如何解决?
['app','map',''better tap'','nima']
答案 0 :(得分:6)
您可以在分割之前从更好的水龙头中删除'
st = "app; map; 'better tap'; nima;"
st_n = st.replace('\'', '').split(';')
print(st_n)
赠予:
['app','map','better tap','nima','']
答案 1 :(得分:3)
一种干净的方法是使用csv
模块:
st = "app; map; 'better tap'; nima;"
import csv
tokens = next(csv.reader([st],delimiter=";",quotechar="'",skipinitialspace=True))
结果:
['app', 'map', 'better tap', 'nima', '']
(您可以在最后过滤空字段,如果有问题,可以用st.strip(";")
预处理字符串。
优点是,如果用引号括起来,则分隔符char是可靠的。像这样更改st
:
st = "app; map; 'better ; tap'; nima"
你会得到
['app', 'map', 'better ; tap', 'nima']
由于模糊的csv
参数可以容忍(并去除)定界符后的空格,因此skipinitialspace
模块可以正确解析此字符串。