我在使用Python时遇到了一个简单的问题,自动将引号类型(单引号和双引号)交换。因此,我无法恢复原始文本。
以下是一个示例:
s1 = ('foo\'bar' , 'bar\"foo', 'dead\'\"beef', 'beef\\\'\"dead')
s2 = unicode(s1)
print repr(s2)
>>>u'("foo\'bar", \'bar"foo\', \'dead\\\'"beef\', \'beef\\\\\\\'"dead\')'
在这个例子中,Python对于元组的第一个元素进行了自动引号类型交换。当然,这是预期的,因为字符串中只出现了单引号。我的问题是,我正在尝试读取一个文件,其格式与上面打印的值完全相同,包括u、起始引号和结束引号。有没有办法读取文件并返回原始的s1元组?实际上,我甚至不需要元组,只需要其中的字符串。由于自动交换,我找到的任何编码/解码方案都不能正常工作。当然,我可以编写一个正则表达式或函数来解决这个问题,但一定有一种Python方法可以解决这个问题。此外,对于我来说,pickle或任何其他序列化都不是解决方案。感谢您的帮助。
unicode
函数期望的是一个字符串,但你提供了一个元组 (s1
)。因此,在内部,unicode
可能会调用str
函数来获取它的字符串表示形式。那么,你为什么不使用[unicode(i) for i in s1]
来创建一个字符串列表,并使用u', '.join()
将它们连接起来呢?这样就可以得到s2
了。 - hitzg