【问题标题】:Pass unicode instead of string from robot framework to python将 unicode 而不是字符串从机器人框架传递给 python
【发布时间】:2016-12-05 10:53:21
【问题描述】:

我有一个机器人框架文件,我在其中调用一个 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 而不是 u"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"

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

【问题讨论】:

标签: python unicode robotframework python-2.x


【解决方案1】:

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

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

print repr(var1)

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

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

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

【讨论】:

  • 好吧,我试图在之后进行比较,但在比较中,我似乎试图将 unicode 与非 unicode 字符串进行比较,因此它不起作用。我尝试用 repr() 打印,结果似乎是一样的。感谢您提供默认参数链接。
  • 那么您应该显示您实际遇到问题的代码。在 Python 2 中将 unicode 与字节串进行比较是完全可能的。
  • 我认为您需要显示您正在传递哪些数据以及如何传递。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 2011-08-11
相关资源
最近更新 更多