Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使字符串介于N和x27之间';及(n&"x2B ; 1)及"x27";';在python中出现_Python - Fatal编程技术网

如何使字符串介于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的简单方法,我将使用您的解决方案,谢谢!