[英]how to remove unnecessary characters in variables in Python
如何從result
刪除多余的括號? {{ }}
連接數據庫的代碼:
import pymysql
try:
db = pymysql.connect(host='localhost', user='root', password='', db='testdb', )
cursor = db.cursor()
cursor.execute("SELECT text FROM wiadomosci WHERE msgid=1")
result = cursor.fetchall()
except:
result = '[Something went wrong][1] :('
tkinter 的代碼:
textExample = Text(window, height=1)
textExample.insert(1.0, "Message from owner: ")
textExample.config(state=DISABLED)
textExample.pack()
textExample2 = Text(window, height=3)
textExample2.insert(1.0, result)
textExample2.config(state=DISABLED)
textExample2.pack()
你實際上沒有看到{花括號},是嗎? 我敢打賭,您實際上看到的是方括號。 cursor.fetchall()
返回一個列表列表。 您碰巧得到一個包含一條記錄的列表,而該記錄只有一個字段。 因此,它將呈現為“[[message]]”。
處理具有單個字段的單個記錄的正確方法是:
result = cursor.fetchone()[0]
您正在將列表或元組傳遞給需要字符串的方法。 在您的情況下, result
是表示行和列的元組元組。 當您這樣做時,由於底層 tcl 解釋器處理列表的方式,tkinter 會添加花括號。
解決方案是將您的數據顯式轉換為字符串,而不是讓 tcl 這樣做,或者從數據中提取字符串。
例如,如果您想要第一行result
的第一列,您可以這樣做:
textExample2.insert("1.0", result[0][0])
您還可以使用fetchone
使其僅返回一行。 您仍然需要從第一列中提取數據。 這將result
設置為第一列中的字符串:
result = cursor.fetchone()[0]
這應該工作
"{{yourText}}".replace("{", "").replace("}", "")
result[2:-2]
是最可靠的方法,因為我們知道消息總是在{{
和}}
。 不要嘗試直接替換括號,否則您可能會修改數據庫中的消息。 例如,如果消息是"{{the result is {a:2,b:3}}}"
,其他答案會將其更改為"the result is a:2,b:3"
而不是"the result is {a:2,b:3}"
如預期。
但是,您可能想首先調查為什么括號在那里。 也許您正在對一個對象進行字符串化,而不是從該對象中提取您想要的數據?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.