2024-04-25 07:21:50 发布
网友
我正在尝试拆分一个类似这样的字符串,例如:
':foo [bar]'
对这个使用str.split()当然会返回[':foo','[bar]']
str.split()
[':foo','[bar]']
但我如何才能使它只返回仅包含这些字符的['foo','bar']?
['foo','bar']
正常地执行str.split(),然后解析每个元素以删除非字母。类似于:
>>> my_string = ':foo [bar]' >>> parts = [''.join(c for c in s if c.isalpha()) for s in my_string.split()] ['foo', 'bar']
我不喜欢正则表达式,但喜欢Python,所以我可能会把它写成
>>> s = ':foo [bar]' >>> ''.join(c for c in s if c.isalnum() or c.isspace()) 'foo bar' >>> ''.join(c for c in s if c.isalnum() or c.isspace()).split() ['foo', 'bar']
“”连接习惯用法有点奇怪,我承认,但您几乎可以用英语阅读其余部分:“如果字符是字母数字或是空白,请将s中字符的每个字符连接起来,然后将其拆分。”。
或者,如果您知道要删除的符号始终在外部,并且单词仍将由空格分隔,并且您知道它们是什么,则可以尝试类似的操作
>>> s = ':foo [bar]' >>> s.split() [':foo', '[bar]'] >>> [word.strip(':[]') for word in s.split()] ['foo', 'bar']
您必须通过列表['foo','[bar]'],并使用正则表达式去掉所有非字母字符。检查Regex replace (in Python) - a simpler way?以获取示例和对文档的引用。
['foo','[bar]']
正常地执行
str.split()
,然后解析每个元素以删除非字母。类似于:我不喜欢正则表达式,但喜欢Python,所以我可能会把它写成
“”连接习惯用法有点奇怪,我承认,但您几乎可以用英语阅读其余部分:“如果字符是字母数字或是空白,请将s中字符的每个字符连接起来,然后将其拆分。”。
或者,如果您知道要删除的符号始终在外部,并且单词仍将由空格分隔,并且您知道它们是什么,则可以尝试类似的操作
您必须通过列表
['foo','[bar]']
,并使用正则表达式去掉所有非字母字符。检查Regex replace (in Python) - a simpler way?以获取示例和对文档的引用。相关问题 更多 >
编程相关推荐