Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Python替换部分列字符串SQLite3_Python_Python 3.x_Sqlite_Replace - Fatal编程技术网

如何用Python替换部分列字符串SQLite3

如何用Python替换部分列字符串SQLite3,python,python-3.x,sqlite,replace,Python,Python 3.x,Sqlite,Replace,我有一个数据库,由于导入不当,在特定列中有一些有问题的字符,我想用正确的字符替换它们 例如,我想将“替换为”,如果在表数据的列

我有一个数据库,由于导入不当,在特定列中有一些有问题的字符,我想用正确的字符替换它们

例如,我想将
替换为
,如果在表数据的
的字符串中找到它

我使用以下代码无效:

conn = sqlite3.connect('Solutions.db')
c = conn.cursor()
sql = """SELECT English, replace(English,'"','"') FROM Data"""
c.execute(sql)
records = c.fetchall()
print("Total rows are:  ", len(records))
print("Printing each row")
for row in records:
    print(row[0])
    print("\n")
conn.commit()
我注意到在调试器中,
sql=
行的翻译如下:

sql = SELECT English, replace(English,\ `'"` \',\'"\') FROM Data
它把一个
\
放在每个
'
之前,我不知道这是不是正常的行为。 无论哪种方式,我都不会替换字符,但是如果我直接在sqlite3中运行相同的命令,那么更改就可以了

我正在使用Python 3.7.5

提前谢谢

CREATE TABLE test(English);
INSERT INTO test(English) VALUES
  ("a"b"c"),
  ("d"e"f");
.headers on
SELECT * from test;

.print Updating
UPDATE test SET English = replace(replace(English, """, """"), "&39;", "'");
SELECT * from test;
$sqlite3
这里的问题是您打印的第一列是
英文
,而替换实际上发生在结果集的第二列

如果更新以下行以查找索引1而不是0,则将得到正确的结果

...
for row in records:
    print(row[1])  # print the second column defined by your replace function.
    print("\n")
...
但是,它仍然不会更新数据库中的实际数据,因为
SELECT
仅查询数据,而
REPLACE
对查询的数据副本执行。要更新数据库中的数据,需要对数据库列执行
update
操作

UPDATE
    Data
SET
    English = REPLACE(English,'"','"');

您希望它更新数据库中的数据还是仅在检索时更新?如果要更新数据库中的数据,需要运行
update
sql语句,而不是
SELECT
。我希望更新数据库中的数据。因此,我尝试了你所说的,使用UPDATE我得到了一个错误:c.execute(sql)sqlite3.OperationalError:near“,”:syntax error虽然现在我遇到了另一个问题,但我无法替换以下的英语=replace(英语,';,”);我找不到一种方法,如何在没有错误代码的情况下将“输入”解决方案:我发现您可以将“作为一行中的两个单引号”“”“谢谢您的回答。”。虽然现在我正努力用“好像我把”来代替',但我得到了意外的令牌错误。
UPDATE
    Data
SET
    English = REPLACE(English,'"','"');