您好,我已经阅读过使用正则表达式的内容,但我不明白如何使用它。

我想将一个字符串分割成一个列表,除以##或用引号引起来的空格外,还要用空格分割

values = '2 #room 2.# 5 1 -1 -1'

values = '2 "room 2." 5 1 -1 -1' values = '2 "room 2." 5 1 -1 -1'

仅使用split()会导致:

['2', '#room', '2.#', '5', '1', '-1', '-1']

我希望它输出房间的名称时不带#号,也不要因为空间而将其拆分:

['2', 'room 2.', '5', '1', '-1', '-1']

#1楼 票数:1

您可以执行以下操作(用#替换#,然后使用shelex split)

import shlex
values = '2 #room 2.# 5 1 -1 -1'
print(shlex.split(values.replace('#','"')))

输出量

['2', 'room 2.', '5', '1', '-1', '-1']

基于Casimir et Hippolyte的出色观察,请参阅评论

如果假设值是

 values = '2 #"room 2."# 5 1 -1 -1'

然后,解决方案是使字符串简单替换#“和”#to just“

import shlex
values = '2 #"room 2."# 5 1 -1 -1'

val=values.replace('#"','"')
print(shlex.split(val.replace('"#','"')))

输出量

['2', 'room 2.', '5', '1', '-1', '-1']

#2楼 票数:0

与其描述re.split的分隔符, re.split使用re.findall并描述以下各项:

re.findall(r'(?<=")[^"]*(?=")|(?<=#)[^#]*(?=#)|[^\s"#]+', values)

#3楼 票数:-2

您可以使用regexp

>>> import re
>>> re.split("[ #]+", '2 #room 2.# 5 1 -1 -1')
['2', 'room', '2.', '5', '1', '-1', '-1']

参考: 使用多个分隔符分割字符串?

  ask by Jay translate from so

未解决问题?本站智能推荐:

2回复

如何用冒号分割字符串,但如果不是,怎么办?

给定一些长字符串: 我希望能够得到一个返回字符串: 这是我的代码更新(不起作用,因为它会分割字符串或根本不分割字符串):
6回复

如何用字符串拆分字符串,除非字符串在python中用引号括起来?

我想用'和'这个词分隔下面的字符串,除非'和'这个词在引号内 期望的结果 我似乎无法找到正确分割字符串的正确的正则表达式模式,因此“计算机和设备费用”不会被拆分。 这是我试过的: 结果 如您所见,结果将“计算机和设备费用”拆分为列表中的不同项目。 我也从这个问题尝试了以下
2回复

python用逗号和空格分割字符串

我需要用逗号和空格分割字符串。 所需行为的一个示例是将字符串' 5, 3, , hello'转换为列表['5', '3', 'hello'] 。 这是我试过的: 为什么要返回空白条目? 如何检索列表['5', '3', 'hello'] ?
4回复

在多个空格上分割字符串,但不能在单个空格上分割字符串[重复]

这个问题已经在这里有了答案: python用至少2个空格分割一个字符串 3个答案 我想编写一个将字符串拆分为多个空格而不是单个空格的函数。 例: 如何在不使用丑陋的循环的情况下从sample_string到split_string ?
3回复

如何用空格或点分割字符串?

例如,作为输入,我可以接收"qwer.qwer"或"qwer qwer" 。 在这两种情况下,我需要拆分此字符串,以便得到结果: 我可以使用正则表达式作为分裂器,这个正则表达式看起来像什么?
2回复

分割字符串时以正则表达式模式括住括号

我想知道以下行为的原因: 我似乎在拆分模式周围加上括号时,将其重新添加到拆分数组中。 但为什么? 它是一致的东西,还是仅仅是正则表达式的孤立功能。
2回复

如何用re.split分割字符串?

我从正则表达式开始冒险。 我对拆分特殊格式的字符串感兴趣。 如果字母不在括号内,则它应成为输出列表的另一个元素。 括号内的字母应放在一起。 样品: 我的字符串=>通缉名单 "ab(hpl)x" => ['a', 'b', 'hpl', 'x'] "(pck)
10回复

如何用括号外的逗号分割字符串?

我得到了一个这样格式的字符串: 所以基本上它是演员名字的列表(可选地在括号中跟上他们的角色)。 角色本身可以包含逗号(演员的名字不能,我强烈希望如此)。 我的目标是将此字符串拆分为对列表 - (actor name, actor role) 。 一个明显的解决方案是遍历每个字符,检查'(' , ')