Python 拆分方法和存储
我试图使用Python 拆分方法和存储,python,regex,python-2.7,Python,Regex,Python 2.7,我试图使用split方法从该字符串中获取最后一个值,即0: d = 'Alert|6317fe57-6787-4132-b40e-6d2863c921cb|0' 并将其存储为名为m的变量。我正在使用以下代码,但由于某些原因,它失败了: import re d = 'Alert|6317fe57-6787-4132-b40e-6d2863c921cb|0' if re.split(('|')[-1], 'd') == 0: print 'ok' 虽然split方法应该返回0,但是我看
split
方法从该字符串中获取最后一个值,即0:
d = 'Alert|6317fe57-6787-4132-b40e-6d2863c921cb|0'
并将其存储为名为m
的变量。我正在使用以下代码,但由于某些原因,它失败了:
import re
d = 'Alert|6317fe57-6787-4132-b40e-6d2863c921cb|0'
if re.split(('|')[-1], 'd') == 0:
print 'ok'
虽然
split
方法应该返回0
,但是我看不到正在打印'ok'
,首先,您的正则表达式已完全损坏,如果您费心测试它,您会发现这一点:
>>> re.split(('|')[-1], 'd')
['d'] # I doubt this is what you expected...
简言之:
位于错误的位置李>[-1]
- 您使用的是字符串literal
而不是标识符'd'
(因此,您试图处理的字符串实际上根本不涉及到这一点)李>d
- 括号实际上并不是表达式的一部分(在它们所在的位置是完全冗余的,
)-另外请注意,如果希望输出在结果中包含匹配项,则只需要在正则表达式中使用括号;及(“|”)[-1]==“|”[-1]
- 管道字符
在正则表达式中具有语义含义,因此必须转义|
>>> re.split(r'(\|)', d)
['Alert', '|', '6317fe57-6787-4132-b40e-6d2863c921cb', '|', '0']
>>> re.split(r'(\|)', d)[-1]
'0'
即使修复了正则表达式,也会得到一个字符串,
'0'
,它永远不会等于0
:
>>> '0' == 0
False
Python是动态的类型,但是是强类型的,因此不会隐式地转换两个参数进行比较。您需要将字符串显式转换为整数:
>>> int('0') == 0
True
或与字符串进行比较:
>>> '0' == '0'
True
然而,实际上没有必要为此使用
re.split
;我只想使用标准字符串方法:
它可以最大限度地减少所需的拆分操作(以及新的字符串对象)的数量,或者只需测试我是否需要:
>>> d.endswith('|0')
True
它最多可以测试两个字符,因此效率更高。首先,您的正则表达式已完全损坏,如果您费心测试它,您会发现这一点:
>>> re.split(('|')[-1], 'd')
['d'] # I doubt this is what you expected...
简言之:
位于错误的位置李>[-1]
- 您使用的是字符串literal
而不是标识符'd'
(因此,您试图处理的字符串实际上根本不涉及到这一点)李>d
- 括号实际上并不是表达式的一部分(在它们所在的位置是完全冗余的,
)-另外请注意,如果希望输出在结果中包含匹配项,则只需要在正则表达式中使用括号;及(“|”)[-1]==“|”[-1]
- 管道字符
在正则表达式中具有语义含义,因此必须转义|
>>> re.split(r'(\|)', d)
['Alert', '|', '6317fe57-6787-4132-b40e-6d2863c921cb', '|', '0']
>>> re.split(r'(\|)', d)[-1]
'0'
即使修复了正则表达式,也会得到一个字符串,
'0'
,它永远不会等于0
:
>>> '0' == 0
False
Python是动态的类型,但是是强类型的,因此不会隐式地转换两个参数进行比较。您需要将字符串显式转换为整数:
>>> int('0') == 0
True
或与字符串进行比较:
>>> '0' == '0'
True
然而,实际上没有必要为此使用
re.split
;我只想使用标准字符串方法:
它可以最大限度地减少所需的拆分操作(以及新的字符串对象)的数量,或者只需测试我是否需要:
>>> d.endswith('|0')
True
这将最多测试两个字符,因此效率更高。>>导入re>>>d='Alert | 6317fe57-6787-4132-b40e-6d2863c921cb | 0'>>如果重新拆分((“|”)[-1],'d')==0:。。。打印“确定”…>>>>>如上所述,虽然拆分函数应该返回0,但我看不到正在打印ok。请帮助>>>导入re>>>d='Alert | 6317fe57-6787-4132-b40e-6d2863c921cb | 0'>>如果重新拆分((“|”)[-1],'d')==0:。。。打印“确定”…>>>>>如上所述,虽然拆分函数应该返回0,但我看不到正在打印ok。请help@VigneshKalai谢谢它一开始是“你正在将一个字符串与一个整数进行比较”,然后从那里开始失控;o) @VigneshKalai谢谢!它一开始是“你正在将一个字符串与一个整数进行比较”,然后从那里开始失控;o)