如何在python中将字符串拆分为我最喜欢的形式? [复制]

How to split string to my favorite form in python? [duplicate]

提问人:forestbat 提问时间:8/4/2022 更新时间:8/4/2022 访问量:46

问:

我有一个字符串,它是从这样的列表转换而来的:

"['station38', 'station28', 'station27', 'station1', 'station0']"

我想用逗号拆分它,变成这样:

list_str=['station38', 'station28', 'station27', 'station1', 'station0']

但是,我只能得到这个:

>>> line_stations = upstream_str.replace('[', '').replace(']', '').split(',')
["'station38'", "'station28'", "'station27'", "'station1'", "'station0'"]

我用过,但是它失败了。strip('"')

那么如何获得我最喜欢的表格呢?感谢您的回复。

Python 字符串 拆分

评论

0赞 Tim Biegeleisen 8/4/2022
您是否正在尝试处理 JSON 字符串的片段?
1赞 stelioslogothetis 8/4/2022
不鼓励使用@DanielHao,因为它会带来安全风险,几乎没有好处。请看这里eval()
0赞 Daniel Hao 8/4/2022
@stelioslogothetis 感谢您的提醒。我知道 - 只是作为一个想法扔掉......应首先发出警告
0赞 stelioslogothetis 8/4/2022
@DanielHao 当然,只是提到它,因为较新的 Python 用户可能会在不知道风险的情况下看到它并使用它
0赞 Codist 8/4/2022
ast 模块中的 literal_eval() 是您需要的

答:

1赞 fsimonjetz 8/4/2022 #1

在这种情况下,您最好使用现成的解决方案。ast.literal_eval

>>> from ast import literal_eval
>>> literal_eval("['station38', 'station28', 'station27', 'station1', 'station0']")
['station38', 'station28', 'station27', 'station1', 'station0']

这是因为可能存在临时解决方案可能未涵盖的各种情况,例如,类似 ."station42'"

1赞 stelioslogothetis 8/4/2022 #2

你快到了!您要删除的引号不是 ,而是 。您可以像以前一样使用:"'replace

upstream_str.replace('[', '').replace(']', '').replace("'", "").split(',')

strip() 删除位于字符串两端的匹配字符。在你的情况下,这是行不通的,因为在执行字符串之前是:split(",")

"'station38', 'station28', 'station27', 'station1', 'station0'"

请注意,在将字符串拆分为列表之前,它们都在字符串的中间。 但是,对于删除 :'strip[]

upstream_str.strip('[]').replace("'", "").split(',')

您还可以查看直接计算字符串以在一次操作中恢复原始列表。我建议查看 literal_eval 上的 StackOverflow 线程。

评论

1赞 isaactfa 8/4/2022
您可以将 替换为 。.replace('[', '').replace(']', '').strip('[]')
1赞 stelioslogothetis 8/4/2022
@isaactfa 谢谢!没有意识到