我正在尝试从csv文件的导入表中删除BOM。有没有人知道在哪里可以将"utf-8-sig“应用到我的代码中,从而成功地做到这一点。
我尝试将filename.encode("utf-8")改为filename.encode("utf-8-sig"),但似乎没有任何改变。我不确定我是否真正理解了编码是如何工作的。
‘类csvrd(对象):
def csvFile(self):
self.readFile('Tuning_Acronyms.csv')
def readFile(self, filename):
conn = sqlite3.connect("Database.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Actions (Acronym TEXT, Detail TEXT, Tuple INTEGER PRIMARY KEY)")
filename.encode('utf-8-sig')
cur.execute("DELETE FROM Actions")
with open(filename) as f:
reader = csv.reader(f)
for field in reader:
cur.execute("INSERT INTO Actions VALUES (?,?,NULL);", field)
cur.execute(("Update Actions SET Tuple = Tuple - 1 WHERE Tuple > 0 "))
conn.commit()
conn.close()“”“
我的结果总是在第一行以‘ai»»’开头
示例
‘ai»»NT’,‘无微调’
我想删除‘ai»’和一个可能的BOMS和编码关系的解释。
任何事都有帮助。:)
发布于 2019-09-05 21:31:08
我自己想出来的。
我将编码应用于Open()语句。
class csvrd(object):
# To be combined into connect()
def csvFile(self):
self.readFile('Acronyms.csv')
def readFile(self, filename):
conn = sqlite3.connect("database.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Actions (Acronym TEXT, Detail TEXT, Tuple INTEGER PRIMARY KEY)")
print(filename)
cur.execute("DELETE FROM Actions")
with open(filename, encoding = 'utf-8-sig') as f:
reader = csv.reader(f)
for field in reader:
cur.execute("INSERT INTO Actions VALUES (?,?,NULL);", field)
cur.execute(("Update Actions SET Tuple = Tuple - 1 WHERE Tuple > 0 "))
conn.commit()
conn.close()https://stackoverflow.com/questions/57793351
复制相似问题