字符串中不需要的双引号赋值

2024-04-29 06:08:18 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这样一个列表:

['a', 'b', 'c', 'd', 'e' ]

我已将此列表转换为字符串:

"'a', 'b', 'c', 'd', 'e'"

字符串周围的双倒逗号仅用于环绕单倒逗号-我需要单倒逗号。问题是当我将此字符串输入到只接受以下内容的包时:

'a', 'b', 'c', 'd', 'e'

当然,这是一个错误。现在,我尝试了.replace(' " ' , ' ')字符串切片,以及所有其他提到的here。因为双引号不是字符串的一部分,而只是为了打印它而存在,并且在赋值过程中被带到变量中,所以不起任何作用

编辑:

下面是我如何将列表转换为字符串的一部分:

string=''
# ...
string = string + (" '%s '," %(items) )

编辑以添加更多信息,因为出现以下注释:

我在玩这个tool。在下面的示例中,我要说的是,我正在自动生成一些变量以放入第三行,但无论我做什么,它都会在字符串周围添加一个逗号:

from dd import autoref as _bdd
bdd = _bdd.BDD()
bdd.declare('x', 'y', 'z') # ----------------------<this line>
u = bdd.add_expr('(x /\ y) \/ ~ z')
bdd.collect_garbage()  # optional
bdd.dump('awesome.pdf')

我得到的错误是:

AssertionError: undefined variable "a", known variables are:
 {"'x', 'y', 'z'": 0}

如果只需将第三行替换为以下内容,您将能够生成此错误:

bdd.declare("'x', 'y', 'z'")

Tags: 字符串编辑列表stringhere过程错误切片
1条回答
网友
1楼 · 发布于 2024-04-29 06:08:18

TL/DR:需要提供单字符串名称-解决方案更进一步


关于minimal reproducible example最酷的一点是,我可以很容易地看到您正在尝试做什么:

方法bdd.add_expr(...)希望变量的名称作为单个字符串-您尝试提供一个包含组合名称的字符串,无论您如何添加或交错字符串分隔符,这都是无效的

原始模块代码的链接也非常有用。在bdd.py中没有declare()方法-因此我查看了它的构造函数class BDD(_abc.BDD):,并在其基类中找到了该方法:_abc.py - delcare implementation,它提供了:

def declare(self, *variables):
    """Add names in `variables` to `self.vars`.
    ```python
    bdd.declare('x', 'y', 'z')
    ```
    """
    for var in variables:
        self.add_var(var)

您可以在此处阅读有关通过f.e.的此类参数的更多信息:


解决方案-改为提供名称:

from dd import autoref as _bdd

your_list = ['x', 'y', 'z']

bdd = _bdd.BDD()
bdd.declare(*your_list )   # provide list elements as single strings to function
u = bdd.add_expr('(x /\ y) \/ ~ z')
bdd.collect_garbage()  # optional
bdd.dump('awesome.pdf')

如果确实要从字符串开始,则根本不需要字符串分隔符,只需提供名称:

from_string = "'x', 'y', 'z'" 

# this undoes all the stringifying of your list
as_list = from_string.translate(str.maketrans("", "", "',")).split()

bdd = _bdd.BDD()
bdd.declare(*as_list)   # provide list elements as single strings to function
u = bdd.add_expr('(x /\ y) \/ ~ z')
bdd.collect_garbage()  # optional
bdd.dump('awesome.pdf')

相关问题 更多 >