繁体   English   中英

如何按某些字符拆分 python 中的字符串?

[英]How to split a string in python by certain characters?

我正在尝试解决前缀表示法的问题,但我被困在我想将字符串拆分为数组的部分:如果我有输入+22 2我想让数组看起来像这样: ['+', '22', '2']我尝试使用

import re 

function,但我不确定它是如何工作的。 我试过了

word.split(' ')

方法,但它只对空间有帮助..有什么想法吗? PS:在前缀符号中,我还将有 + - 和 *。 所以我需要拆分字符串,所以空间不在数组中,并且+,-,*在我正在考虑的数组中

word = input()
array = word.split(' ')

然后,我想用这 3 个字符分割一个字符串。

样本输入: '+-12 23*67 1'

Output: ['+', '-', '12', '23', '*', '67', '1']

您可以使用re在文本中查找模式,您似乎正在寻找以下其中之一: +-*或数字组。 所以编译一个寻找它的模式并找到所有匹配这个模式的东西,你会得到一个列表:


import re

pattern = re.compile(r'([-+*]|\d+)')

string = '+-12 23*67 1'
array = pattern.findall(string)
print(array)

# Output:
# ['+', '-', '12', '23', '*', '67', '1']

还有一些测试(将您的示例字符串与预期输出进行比较):

test_cases = {
    '+-12 23*67 1': ['+', '-', '12', '23', '*', '67', '1'],
    '+22 2': ['+', '22', '2']
}

for string, correct in test_cases.items():
    assert pattern.findall(string) == correct

print('Tests completed successfully!')

模式解释(您可以在下面链接的文档中阅读相关内容):
r'([-+*]|\d+)'
r在前面使其成为原始字符串,以便 Python 从字面上解释所有字符,这有助于正则表达式模式中的转义序列,因为您可以使用一个反斜杠对其进行转义
(...)括号(在这种情况下它们不是必需的)表示稍后可以在需要时检索的组(但在这种情况下它们并不重要)
[...]表示该组中的任何单个字符都可以匹配,因此如果存在-+*中的任何一个,它将匹配
| 逻辑or ,表示可以匹配任一侧(在这种情况下区分数字和特殊字符)
\d数字的特殊转义序列,表示匹配任何数字, +表示匹配任何一个或多个数字

有用:

  • re模块,那里的文档解释了模式中每个字符的作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM