我有一个Python字符串,它看起来像这样:
[u'$649.99']
我想用正则表达式来拉出$649.99
。
正则表达式应该看最远的']
以确保文本不会意外地被切断。我想期待$649.99
。
我有一个Python字符串,它看起来像这样:
[u'$649.99']
我想用正则表达式来拉出$649.99
。
正则表达式应该看最远的']
以确保文本不会意外地被切断。我想期待$649.99
。
你不需要一个正则表达式。
>>> import ast
>>> s = "[u'$649.99']"
>>> ast.literal_eval(s)
['$649.99']
>>> ast.literal_eval(s)[0]
'$649.99'
我想你想要的是:
/'(.*)'/
这是引号之间的一切。
简单的解决办法是
regex = re.compile(r"\[u'(.*)'\]")
result = regex.match("[u'$649.99']").group(0)
请注意,如果得到了错位成字符串表示Unicode字符串不包含特殊字符,'
或\
这仅适用。
如果可能出现这种情况,像ast.literal_eval()
这样的Python文字解析器将是获取字符串表示内容的更好方法。
建议你不需要Regex。您可以使用str()
functino将Unicode字符串转换成你的名单分成一个正常的字符串:
a = "[u'$649.99']"
str(eval(a)[0])
但如果你想正则表达式这将做到这
r'\$\d{1,3}\.\d{1,2}'
有了这个解决方案,您不需要导入任何东西:
>>> s = "[u'$649.99']"
>>> s.split("'")[1]
'$649.99'
这真的是你的字符串看起来像(包括括号和内部撇号),还是包含一个unicode字符串的列表? – DSM
@DSM不幸的是,这直接是字符串。它的一个字符串表示一个列表包含一个unicode字符串.... – user299709
这必须是一个家庭作业问题。非常类似于http://stackoverflow.com/questions/33112431/python-unable-to-convert-unicode-to-string – RobertB