解析Python ASCII扩展字符位于开头

时间:2016-09-22 13:29:55

标签: regex python-2.7 robotframework extended-ascii

我需要从Python中的调试语句中删除前3个或4个ASCII扩展字符,但我现在还不能。这是一个例子:

ª!è[002:58:535]REGMICRO:Load: 36.6

ëª7è[001:40:971]HTTP_CLI:Http Client Mng not initialized.

我试过了: ^.*[A-Za-z]+$

[\x80-\xFF]+HTTP_CLI:0 - Line written in.*

但是一切都被忽略了并且给了我这个错误:

" 20160922 15:16:28.549 : FAIL : UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 1: ordinal not in range(128) 20160922 15:16:28.551 : INFO : ${resulters} = ('FAIL', u"UnicodeEncodeError: 'ascii' codec can't encode character u'\\x80' in position 1: ordinal not in range(128)") 20160922 15:16:28.553 : INFO : ('FAIL', u"UnicodeEncodeError: 'ascii' codec can't encode character u'\\x80' in position 1: ordinal not in range(128)")"

任何使用RIDE和Python的人?

谢谢!

1 个答案:

答案 0 :(得分:1)

回答如何使用RF删除方括号前的字符(如果我正确理解了问题,坦率地说 - 我不确定) - 你试过的正则表达式是不正确的;说你想在第一个方括号后得到所有东西:

${line}=    Set Variable    ëª7è[001:40:971]HTTP_CLI:Http Client Mng not initialized.
${regx}=    Set Variable    ^.*(\\[.*$)
${result}=  Get Regexp Matches      ${line}      ${regx}      1

你正在进行的正则表达式(第2行^)是"从行的开头,跳过一切直到第一个方括号 - 从方括号到结尾的顺序是第1组& #34 ;.然后使用kw" Get Regexp Matches"你得到匹配的组1。

在python中:

import re
line = "ëª7è[001:40:971]HTTP_CLI:Http Client Mng not initialized."
regx = "^.*(\\[.*$)"
result = re.search(regx, line).group(1)  # the value of result is "[001:40:971]HTTP_CLI:Http Client Mng not initialized."