将 unicode 而不是字符串从机器人框架传递到 python

Pass unicode instead of string from robot framework to python

我有一个机器人框架文件,我在其中调用一个 python 函数并向其传递一个参数。我想将参数作为 Unicode 传递给 python,但它一直作为字符串传递。

函数是

def assert_my_test( var1, var3=[]):
  print "var1" #this i want in unicode, unicode(var1) doesnt help
  f=gzip.open("myfile.gzip")
  lines=f.readlines()

  if any(unicode(var1) in unicode(s) for s in lines):
       print "found our line"

机器人是

========================  =====================  ======================= 
Test Case                 Action                 Argument
========================  =====================  ======================= 
test1                     myprog.assert_my_test  \x01\x02\x03

输出是 x01x02x03 而不是 你"x01x02x03"

知道如何正确传递 Unicode 吗?非常感谢。

我尝试将“Unicode(var1)”传递给函数定义,但这会导致错误。

我要传递的完整变量是 -

\x01\x02\x03html&h=250&slotname5&adk=1204670.0&url=htt||1|0Ft2qy|4CX000||||17.022qy^A0C5vZBmjiK^ABusiness^DPersonalFin-0^A^A^Afalse^Afalse^A^A^A^A^A^A^A^A^A0^A0^A0^A0^A^A^A1^A^A^A^A1^A^A^A^A6284035007053575^A^A^Aen^A^Ab1cc^A^A8281671^Aalias_type^DDX^Calias_id^D4CXDxrs315^C"

我想查找这个变量是否存在于文件中。

当您打印一个值时,您自然会得到该值的可打印表示。

我不知道你为什么想要这个,但你可以通过调用 repr():

获得你想要的输出
print repr(var1)

(另外,与您的问题无关,但不要使用列表作为默认参数:请参阅 this question 了解原因。)

编辑所以我仍然不完全确定你想做什么,但我认为是怎么回事你有一个由斜杠、X 和数字组成的原始字符串,而不是字节。您可以使用 "unicode-escape" 编解码器将其解码为 un​​icode:

var1 = r'\x01\x02\x03'
decoded = var1.decode('unicode-escape')  # result: u'\x01\x02\x03'