2024-04-24 04:23:31 发布
网友
我有一个这样的字符串:
"I\thave\ta\t\tstring"
为了按制表符进行拆分,我使用了以下方法:
现在,这个方法从字符串中删除所有制表符,但我希望它只删除单词后面第一个出现的制表符,因此它的结果如下:
"Ihavea\tstring"
有办法吗?在
在否定look-behind断言上使用re.split应该可以做到:
re.split
import re s = ''.join(re.split(r'(?<!\t)\t', row)) print(s) # 'Ihavea\tstring'
断言(?<!\t)阻止在\t前面有另一个{}的拆分。在
(?<!\t)
\t
如果实际上不需要拆分中的项目,可以使用re.sub:
re.sub
如果您希望避免导入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+'基本上只是将所有连续的选项卡组合在一起。在
r'\t+'
在否定look-behind断言上使用
re.split
应该可以做到:断言}的拆分。在
(?<!\t)
阻止在\t
前面有另一个{如果实际上不需要拆分中的项目,可以使用
^{pr2}$re.sub
:如果您希望避免导入re模块,那么列表理解也是一种方法:
布尔上下文中的空字符串为false,并且将为每个连续的拆分字符生成空列表元素(在本例中为“\t”)
为了简单起见,可以使用^{}
正则表达式
r'\t+'
基本上只是将所有连续的选项卡组合在一起。在相关问题 更多 >
编程相关推荐