如何使字符串介于N和x27之间';及(n&"x2B ; 1)及"x27";';在python中出现
我的字符串如下如何使字符串介于N和x27之间';及(n&"x2B ; 1)及"x27";';在python中出现,python,Python,我的字符串如下 2 | 848 | Seconds | 660.00 | 900.00 | OK 我想在第一个“|”之前得到数据 然后在第一个“|”和第二个“|”之间 直到最后一个。我还想删除空格和/或制表符 \|(^\|)*\| 我试着用这个方法去除中间的“|”,但它不起作用。 有什么想法吗 谢谢你正则表达式:[^\s\|\t]+ 详细信息: [^\s |]匹配列表中不存在的单个字符 +在一次和无限次之间匹配 \s匹配任何空白字
2 | 848 | Seconds | 660.00 | 900.00 | OK
我想在第一个“|”之前得到数据
然后在第一个“|”和第二个“|”之间
直到最后一个。我还想删除空格和/或制表符
\|(^\|)*\|
我试着用这个方法去除中间的“|”,但它不起作用。
有什么想法吗
谢谢你正则表达式:
[^\s\|\t]+
详细信息:
[^\s |]
匹配列表中不存在的单个字符
+
在一次和无限次之间匹配
\s
匹配任何空白字符
\\\124;
与字符匹配|
\t
匹配制表符
此操作不需要regexp:
>>> s = "2 | 848 | Seconds | 660.00 | 900.00 | OK"
>>> parts = [part.strip() for part in s.split("|")]
>>> parts
['2', '848', 'Seconds', '660.00', '900.00', 'OK']
>>> parts[0]
'2'
>>> parts[2]
'Seconds'
>>> parts[-1]
'OK'
>>> "|".join(parts)
'2|848|Seconds|660.00|900.00|OK'
bruno的方法非常适合删除这些额外的代码行
givenText = "2 | 848 | Seconds | 660.00 | 900.00 | OK"
desiredText = []
givenTextList = givenText.split("|")
for i in givenTextList:
desiredText.insert(len(desiredText), i.strip())
print(desiredText)
这里split用于根据给定参数从给定字符串返回列表
strip用于删除末尾的所有额外空格这就是它在参数上拆分的方式。对于这种简单的情况,它与普通的拆分
相比没有明显的优势,只是不需要单独的条带
来删除|
周围的空白
import re
str = "2 | 848 | Seconds | 660.00 | 900.00 | OK"
result = re.split(r'\s*\|\s*', str)
结果:
['2', '848', 'Seconds', '660.00', '900.00', 'OK']
你“需要”使用正则表达式吗?听起来像是家庭作业。@internet\u用户:这不是堆栈溢出的问题,那么你为什么觉得有必要提及它?当你说“文本”时,你是指字符串吗?请仔细阅读并具体说明。另外,如果是家庭作业/作业,请明确说明您试图“去除|介于|之间”的内容。因此,对于这个示例,您需要什么结果?@internetu_user我“需要”使用regex,因为我想知道如何使用regex,因为我的整个解析器都在使用regex,我希望保持这种方式,谢谢如果
2 |某个值
?@ctwheels我认为他没有这种情况。这没有按要求获得第(N+1)个字段。这更像是^(?:[^ |]*\\\|){N}([^ |]*])
。也就是说,使用split
(如另一个答案所示)要干净得多。这是更好的解决方案,但OP想使用regex
我喜欢这个解决方案,如果我找不到使用regex的简单方法,我将使用您的解决方案,谢谢!