Я действительно запутался в части sqlite, где я распечатываю свою базу данных, потому что я продолжаю получать «u» в начале каждой строки, это doesn «есть», хотя, я полагаю, не принимается как строка? Это происходит только в этой программе (я тестировал ее и на другой).'u' в начале вывода (Sqlite, Python)
Я проверил код много раз (он не появляется в базе данных, когда я открываю его с «SQLite браузер базы данных»)
Так это код:
#!/usr/bin/python
import sqlite3
import os
def list_n_convert(way):
if way == 'mov':#movie search
output = os.popen("find '/home/fugo/' -name '*.mp4' -printf '%f\n'").read()
word = ''
lyst = []
for letter in output:
if letter != '\n':
word += str(letter)
else:
lyst.append(word)
word = ''
return lyst
#Loop to create entries
def entry_maker(lyst, column):
for count in range(len(lyst)):
cur.execute("INSERT OR IGNORE INTO myliltable ({}) VALUES (?)".format(column), (lyst[count],))
con.commit()
if __name__ == '__main__':
#necessities for start-up of sql-lite
con = sqlite3.connect('movie.db')
cur = con.cursor()
#Create a table, if it's non-existent
cur.execute('CREATE TABLE IF NOT EXISTS myliltable (name TEXT PRIMARY KEY, cover TEXT, genre TEXT)')
entry_maker(list_n_convert('mov'), 'name')
cur.execute('SELECT * FROM myliltable')
for row in cur.fetchall():
print(row) #print each row in a line <--- 'ERROR' happens here
cur.close()
con.close()
Это то, что вывод выглядит следующим образом:
(u'Umbra.mp4', None, None)
(u'xd.mp4', None, None)
(u'Nice.mp4', None, None)
(u'Haha.mp4', None, None)
Я объясню, что делает программа, может быть, это поможет найти ошибку:
Первая функция «list_n_convert» выполняет поиск в моей домашней папке для любых файлов с окончанием «.mp4», а затем преобразует результат поиска в строки и добавляет их в список.
Вторая запись в базу данных для каждого элемента в списке (каждый файл mp4). В конце я вызываю функции, и каждая строка распечатывается; здесь происходит ошибка.
Петля в 'list_n_convert' очень окольным способом повторного внедрения' Lyst = output.splitlines() ':-) –
Что вы видите это представление а * tuple *, а внутри этого кортежа первый элемент является строкой unicode. Распечатайте каждый элемент кортежа отдельно, и вы больше не увидите префикс 'u'. Например, попробуйте использовать 'print (row [0])'. – Evert
В любом случае вы видите представление 'repr()' для строковых объектов Unicode * в кортеже. Это * полностью нормальное поведение *. Префикс 'u' предназначен для указания точного типа объекта, а также делает его round-trippable; вы можете скопировать эту целую строку с префиксом 'u' в скрипт или интерпретатор Python для воспроизведения точного значения. –