热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中移除字符串的默认引号?

在Python编程中,若需生成SQL语句中的`CURRENTTIMESTAMP`命令而不希望其带有默认的字符串引号,可以通过直接使用变量或字符串拼接的方法来实现。此方法能有效避免因字符串自带引号而导致的SQL语法错误,确保命令正确执行。
大家好,刚接触Python不久,最近在写一个小程序,需要生成一个sql中的命令'CURRENT TIMESTAMP',但是因为是在sql中的命令,所以不能带引号,不知道如何去掉这个str类型默认带的单引号。
在网上查了很多,有的用eval,有的用replace,但是试了试都不行,不知道各位大神有没有好的办法?重谢!!

11 个解决方案

#1


直接format字符串,这个引号就会去掉

#2


引用 1 楼 oyljerry 的回复:
直接format字符串,这个引号就会去掉

能麻烦说详细点吗?我是把字符串放到一个list里,然后保存到文件中,用了format之后写入到文件里的字符串还是带引号的,代码是这样的:
        WK_TS = 'CURRENT TIMESTAMP'
        sql_row_list.append(format(WK_TS)) 

这样还是不行的, 请问应该怎么做呢?谢谢!

#3


你要拼成一个sql吗?是拼成的申请了中多了引号吗?那用replace应该可以啊

#4


这是测试代码:

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
sql = sql.replace('\'', '')
print(sql)


这是测试结果:
 where time ='CURRENT TIMESTAMP'
 where time =CURRENT TIMESTAMP

#5


估计你用replace时没有赋值,所以没变。比如:
message= "aa'"
message.replace('a', 'b')
这样是没作用的,你必须再赋值
message = message.replace('a', 'b')这样才行

#6


引用 4 楼 shihengzhen101 的回复:
这是测试代码:

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
sql = sql.replace('\'', '')
print(sql)


这是测试结果:
 where time ='CURRENT TIMESTAMP'
 where time =CURRENT TIMESTAMP


不需要拼成sql,只是写入到文件,你这个方法我也试过,不行, 用print打出来不会带引号,但是写入到文件还是有引号的。

#7


引用 5 楼 kuangbao9 的回复:
估计你用replace时没有赋值,所以没变。比如:
message= "aa'"
message.replace('a', 'b')
这样是没作用的,你必须再赋值
message = message.replace('a', 'b')这样才行

赋值了,不行的,写入文件之后还是带''

#8


引用 2 楼 liujinwei2005 的回复:
Quote: 引用 1 楼 oyljerry 的回复:

直接format字符串,这个引号就会去掉

能麻烦说详细点吗?我是把字符串放到一个list里,然后保存到文件中,用了format之后写入到文件里的字符串还是带引号的,代码是这样的:
        WK_TS = 'CURRENT TIMESTAMP'
        sql_row_list.append(format(WK_TS)) 

这样还是不行的, 请问应该怎么做呢?谢谢!


就你的这两行代码本身就不会有引号的,除非你把sql_row_list直接保存到文本的
要把list里的元素一个一个单独写进文本

#9


引用 6 楼 liujinwei2005 的回复:
Quote: 引用 4 楼 shihengzhen101 的回复:

这是测试代码:

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
sql = sql.replace('\'', '')
print(sql)


这是测试结果:
 where time ='CURRENT TIMESTAMP'
 where time =CURRENT TIMESTAMP


不需要拼成sql,只是写入到文件,你这个方法我也试过,不行, 用print打出来不会带引号,但是写入到文件还是有引号的。

我写入文件也是正常的啊,要不你再试试

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
newsql = sql.replace('\'', '')
print(newsql)

with open('mysql.txt', 'w') as file:
    file.write(sql)
    file.write("\n")
    file.write(newsql)


#10


引用 9 楼 shihengzhen101 的回复:
Quote: 引用 6 楼 liujinwei2005 的回复:

Quote: 引用 4 楼 shihengzhen101 的回复:

这是测试代码:

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
sql = sql.replace('\'', '')
print(sql)


这是测试结果:
 where time ='CURRENT TIMESTAMP'
 where time =CURRENT TIMESTAMP


不需要拼成sql,只是写入到文件,你这个方法我也试过,不行, 用print打出来不会带引号,但是写入到文件还是有引号的。

我写入文件也是正常的啊,要不你再试试

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
newsql = sql.replace('\'', '')
print(newsql)

with open('mysql.txt', 'w') as file:
    file.write(sql)
    file.write("\n")
    file.write(newsql)



谢谢,可以了,我的是因为在写入到list的时候用的replace,然后把list写到文本中,所以才不行。然后我在写入文件的时候对文本整体做了replace,可以了:
f.write(str(insert_cmd2.replace('\'CURRENT TIMESTAMP\'', 'CURRENT TIMESTAMP')) + '\n')

#11


引用 10 楼 liujinwei2005 的回复:
Quote: 引用 9 楼 shihengzhen101 的回复:

Quote: 引用 6 楼 liujinwei2005 的回复:

Quote: 引用 4 楼 shihengzhen101 的回复:

这是测试代码:

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
sql = sql.replace('\'', '')
print(sql)


这是测试结果:
 where time ='CURRENT TIMESTAMP'
 where time =CURRENT TIMESTAMP


不需要拼成sql,只是写入到文件,你这个方法我也试过,不行, 用print打出来不会带引号,但是写入到文件还是有引号的。

我写入文件也是正常的啊,要不你再试试

sql = " where time ='CURRENT TIMESTAMP'"
print(sql)
newsql = sql.replace('\'', '')
print(newsql)

with open('mysql.txt', 'w') as file:
    file.write(sql)
    file.write("\n")
    file.write(newsql)



谢谢,可以了,我的是因为在写入到list的时候用的replace,然后把list写到文本中,所以才不行。然后我在写入文件的时候对文本整体做了replace,可以了:
f.write(str(insert_cmd2.replace('\'CURRENT TIMESTAMP\'', 'CURRENT TIMESTAMP')) + '\n')

推荐阅读
author-avatar
手机用户2502859733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有