Как убрать символы из строки, которая вернулась из базы данных?
Строка возвращается в таком формате:
('text',)
Как это дело обрезать и оставить только text?
Ответы (3 шт):
вот так:
x = ('text', )
x = x[0]
если это строка, то так:
x = "('text',)"
x = x[2:-3]
Используйте встроенный метод для строк str.replace(old, new[, count])
my_str = "('text',)"
plain_str = my_str.replace("('", "").replace("',)", "")
заменит ненужные подстроки на пустые, в результате:
>>> plain_str
text
При чтении данных из БД с использованием методов cursor.fetchone(), cursor.fetchall() - вы всегда получаете кортежи с данными, в не зависимости от того сколько столбцов таблицы вы читаете - один или несколько.
Судя по тому, что вы получаете строку "('text',)" вместо кортежа ('text',), вы неправильно обрабатываете полученные из БД кортежи с данными. А именно применяете str() к полученному из БД кортежу данных:
Пример того, как делать не нужно:
cur.execute("SELECT text_col FROM table_name")
for row in cur.fetchall():
text = str(row) # <-- опасное и ненужное преобразование кортежа с данными в строку!
print(text)
так делать не стоит сразу по нескольким причинам - вы превращаете кортеж с упорядоченными данными (с правильными типами данных) в строку, которую впоследствии придется парсить и, в случае когда столбец(цы) таблицы имеют нестроковой тип данных, еще и преобразовывать эти элементы обратно к правильным типам данных. Это ненужные операции, замедляющие код и делающие его менее понятным.
Лучше сделать так:
cur.execute("SELECT text_col FROM table_name")
for row in cur.fetchall():
text = row[0]
# дальше мы используем text