如何按制表符拆分字符串,但每次仅限一次出现

2024-04-24 04:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的字符串:

"I\thave\ta\t\tstring"

为了按制表符进行拆分,我使用了以下方法:

^{pr2}$

现在,这个方法从字符串中删除所有制表符,但我希望它只删除单词后面第一个出现的制表符,因此它的结果如下:

"Ihavea\tstring"

有办法吗?在


Tags: 方法字符串单词制表符ta办法pr2tstring
3条回答

在否定look-behind断言上使用re.split应该可以做到:

import re

s = ''.join(re.split(r'(?<!\t)\t', row))
print(s)
# 'Ihavea\tstring'

断言(?<!\t)阻止在\t前面有另一个{}的拆分。在

如果实际上不需要拆分中的项目,可以使用re.sub

^{pr2}$

如果您希望避免导入re模块,那么列表理解也是一种方法:

row = "I\thave\ta\t\tstring"
text = [splits if splits else "\t"  for splits in row.split("\t")]
"".join(text)
#'Ihavea\tstring'

布尔上下文中的空字符串为false,并且将为每个连续的拆分字符生成空列表元素(在本例中为“\t”)

为了简单起见,可以使用^{}

from re import split
text = "I\thave\ta\t\tstring"
split_string = split(r'\t+', text)  #Gives ['I', 'have', 'a', 'string']

正则表达式r'\t+'基本上只是将所有连续的选项卡组合在一起。在

相关问题 更多 >