簡體   English   中英

如何在Python中刪除變量中不必要的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM