簡體   English   中英

在某些字符后分割字符串?

[英]Splitting a string after certain characters?

我將得到一個字符串,並且每當它具有“ |”,“ /”,“。”時都需要將其拆分。 要么 ”_”

我該如何快速完成? 我知道如何使用命令拆分,但是有什么辦法可以給它提供多個拆分條件? 例如,如果給定的輸入是

Hello test|multiple|36.strings/just36/testing

我希望輸出給出:

"['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']"

使用正則表達式和正則表達式模塊:

>>> import re
>>> s='You/can_split|multiple'
>>> re.split(r'[/_|.]', s)
['You', 'can', 'split', 'multiple']

在這種情況下, [/_|.]將拆分為這些字符中的任何一個。

或者,您可以使用列表推導來插入單個(也許是多個字符)定界符,然后在其上拆分:

>>> ''.join(['-><-' if c in '/_|.' else c for c in s]).split('-><-')
['You', 'can', 'split', 'multiple']

與添加的示例:

>>> s2="Hello test|multiple|36.strings/just36/testing"

方法1:

>>> re.split(r'[/_|.]', s2)
['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']

方法2:

>>> ''.join(['-><-' if c in '/_|.' else c for c in s2]).split('-><-')
['Hello test', 'multiple', '36', 'strings', 'just36', 'testing']

使用groupby

from itertools import groupby

s = 'You/can_split|multiple'

separators = set('/_|.')
result = [''.join(group) for k, group in groupby(s, key=lambda x: x not in separators) if k]
print(result)

產量

['You', 'can', 'split', 'multiple']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM