gpt4 book ai didi

python - 单引号和双引号自动切换

转载 作者:行者123 更新时间:2023-11-28 18:38:35 28 4
gpt4 key购买 nike

我在使用 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 方法来做到这一点。酸洗或任何其他序列化也不是我的解决方案。

提前致谢

最佳答案

暂时搁置报价问题,让我们专注于您的真正需求:

to read a file which is of the format exactly like the printed value above including the u, starting quote, and trailing quote. ... Actually, I don't even need the tuple just the strings inside

如果你有一个文件,其内容如下所示:

u'("foo\'bar", \'bar"foo\', \'dead\\\'"beef\', \'beef\\\\\\\'"dead\')'

以下程序将使您能够访问其中的字符串:

import ast
with open('x.txt') as input_file:
for line in input_file:
strings = ast.literal_eval(ast.literal_eval(line))
# You can do whatever you want with the `strings` var, e.g:
assert(strings[0] == "foo'bar")
assert(strings[0] == 'foo\'bar')
print strings[0]

引用:

关于python - 单引号和双引号自动切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851599/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com