所以我有一个这样的列表。
['a', 'b', 'c', 'd', 'e' ]
我已经把这个列表转换成了一个字符串
"'a', 'b', 'c', 'd', 'e'"
字符串周围的双倒逗号只是为了包住单倒逗号而存在的 我需要单倒逗号。问题是当我把这个字符串输入到一个只接受这个的包中。
'a', 'b', 'c', 'd', 'e'
当然,会出现一个错误。现在,我已经尝试了 .replace(' " ' , ' '), 切线以及所有其他提到的 此处. 什么都没用,因为双引号不是字符串的一部分,只是为了打印而存在,并在赋值时被带入变量。
EDIT:
这是我将列表转换为字符串的部分内容。
string=''
----
----
string=string + (" '%s '," %(items) )
EDIT增加了更多的信息,因为下面的评论。
我在玩这个 工具. 在下面的例子中,我想说的是,我自动生成一些变量放在第三行,但无论我怎么做,它总是在字符串周围加上一个额外的逗号。
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'")
TLDR:需要提供单个字符串名称--解决方案在下面。
关于一个很酷的事情 最低限度的重现性例子 是我很容易明白你想做什么。
这个方法 bdd.add_expr(...)
想要 姓名 变量作为单个字符串的名称 - 你试图提供一个组合名称的字符串,无论你如何添加或交错字符串定界符,都不会成功。
原始模块代码的链接也非常有用。这里没有 declare()
方法中 bdd.py - 所以我看了一下它的构造函数 类BDD(_abc.BDD)。 并在这里的基类中找到了这个方法。_abc.py - delcare实现 这给了你。
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)
你可以在这里阅读更多关于这种参数传递的信息。
解决办法--提供名称来代替。
from dd import autoref as _bdd
your_list = ['x', 'y', 'z']
bdd = _bdd.BDD()
bdd.declare(*your_list ) # provide your list elements as single strings to this 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 your list elements as single strings to this function
u = bdd.add_expr('(x /\ y) \/ ~ z')
bdd.collect_garbage() # optional
bdd.dump('awesome.pdf')]