是否可以在字符串split()方法中放置两个分隔符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在字符串split()方法中放置两个分隔符?相关的知识,希望对你有一定的参考价值。

抱歉缺少更好的标题。

希望下面的说明有所帮助。给定以下字符串:

 f=' Sleep stage W\\x14\\x00+26070\\x1590\\x14 Sleep stage W\\x14\\x00+26070\\x1590\\x14 Movement time\\x14\\x00+28110\\x15120\\x14 Sleep stage  3\\x14\\x00+28230\\x1530\\x14'

并且将如下拆分

' W\\x14\\x00+26070\\x1590\\x14 '
' W\\x14\\x00+26070\\x1590\\x14 '
' \\x14\\x00+28110\\x15120\\x14 '
'  3\\x14\\x00+28230\\x1530\\x14'

为了实现这一点,起草了以下代码

f=' Sleep stage W\\x14\\x00+26070\\x1590\\x14 Sleep stage W\\x14\\x00+26070\\x1590\\x14 Movement time\\x14\\x00+28110\\x15120\\x14 Sleep stage  3\\x14\\x00+28230\\x1530\\x14'
raw_hypno = [x for x in f.split('Sleep stage')][1:]

产生以下输出

' W\\x14\\x00+26070\\x1590\\x14 '
' W\\x14\\x00+26070\\x1590\\x14 Movement time\\x14\\x00+28110\\x15120\\x14 '
'  3\\x14\\x00+28230\\x1530\\x14'

可以看出,细节Movement time没有正确分割。

我是否可以使用split condition方法分配两个split

答案
使用正则表达式-> re.split

Ex:

f=' Sleep stage W\\x14\\x00+26070\\x1590\\x14 Sleep stage W\\x14\\x00+26070\\x1590\\x14 Movement time\\x14\\x00+28110\\x15120\\x14 Sleep stage 3\\x14\\x00+28230\\x1530\\x14' print(re.split(r"Sleep stage|Movement time", f))

输出:

[' ', ' W\\x14\\x00+26070\\x1590\\x14 ', ' W\\x14\\x00+26070\\x1590\\x14 ', '\\x14\\x00+28110\\x15120\\x14 ', ' 3\\x14\\x00+28230\\x1530\\x14']
另一答案
您可以先将所有'Movement time'替换为'Sleep stage'

然后简单地按'Sleep stage'分割:

f=' Sleep stage W\\x14\\x00+26070\\x1590\\x14 Sleep stage W\\x14\\x00+26070\\x1590\\x14 Movement time\\x14\\x00+28110\\x15120\\x14 Sleep stage 3\\x14\\x00+28230\\x1530\\x14'.replace('Movement time','Sleep stage').split('Sleep stage')

以上是关于是否可以在字符串split()方法中放置两个分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Tableview的三列中放置文本

我可以在 SwiftUI 的单个列表部分中放置多个文本行吗?

python中split的具体用法

在 WPF 的菜单中放置分隔线

Boost::Split 使用整个字符串作为分隔符

如何在中间的android中放置带有文本的元素之间的分隔线?