字符串中不必要的双引号分配

问题描述 投票:1回答:1

所以我有一个这样的列表。

['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'")
python-3.x string comma
1个回答
3
投票

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')]
© www.soinside.com 2019 - 2024. All rights reserved.