如何清理要在Python split中加载到数组的字符串?

时间:2018-10-17 19:38:20

标签: python

我有一个动态创建的字符串集,该字符串集用;分隔,现在我想将它们转换为类似的数组

st = "app; map; 'better tap'; nima;"

st_n = st.split(';')
print(st_n)

这很好用,直到,只有一个词像app,但是当有一个'better tap'(我得到很多)时,它会将它们包装起来在额外的""中。我该如何解决?

  

['app','map',''better tap'','nima']

2 个答案:

答案 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模块可以正确解析此字符串。