[英]Unwanted assignment of double quote in string
所以我有一個這樣的列表:
['a', 'b', 'c', 'd', 'e' ]
我已將此列表轉換為字符串:
"'a', 'b', 'c', 'd', 'e'"
字符串周圍的雙引號僅用於環繞單個引號 - 我需要單個引號。 問題是當我將此字符串輸入到只接受這個的 package 時:
'a', 'b', 'c', 'd', 'e'
當然,有一個錯誤。 現在,我已經嘗試了.replace(' " ', ' ')
,字符串切片,以及這里提到的所有其他方法。因為雙引號不是字符串的一部分,但只是為了打印它而存在,並且在期間被帶到變量中那作業。
編輯:
這是我如何將列表轉換為字符串的一部分:
string=''
# ...
string = string + (" '%s '," %(items) )
由於以下評論,編輯以添加更多信息:
我正在玩這個工具。 在下面的示例中,我要說的是我正在自動生成一些變量以放入第三行,但無論我做什么,它總是在字符串周圍加上一個額外的逗號:
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'")
TL/DR:需要提供單個字符串名稱 - 解決方案進一步向下。
一個最小的可重現示例很酷的一點是我可以很容易地看到你正在嘗試做什么:
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)
您可以在此處閱讀有關這種參數傳遞 fe 的更多信息:
解決方案 - 提供名稱:
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')
如果您真的想從字符串中獲取 go,則根本不需要字符串分隔符,只需提供名稱:
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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.