热门标签 | 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')

推荐阅读
  • MySQL 5.6 引入了全局事务标识符(GTID)和多线程复制机制,显著提升了数据库的可靠性和性能。GTID 作为一种新的事务标识方式,确保了事务在主从节点间的一致性,避免了传统基于日志位置的复制可能出现的问题。多线程复制则通过并行处理多个复制任务,大幅提高了复制效率,特别是在大型数据库环境中表现更为突出。这些新特性不仅增强了 MySQL 的高可用性和扩展性,还为数据库管理带来了更多灵活性和便利性。 ... [详细]
  • 本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。 ... [详细]
  • 在MySQL 5.1.22之前的版本中,InnoDB通过表级锁来确保自增字段的一致性。具体来说,InnoDB内部使用一个计数器来维护自增值,每次插入新记录时都需要获取表锁以保证数据的一致性和完整性。这种机制虽然简单,但在高并发环境下会显著影响性能。 ... [详细]
  • 程序连接MySQL数据库的多种方法详解 ... [详细]
  • MySQL 8.0 中的二进制日志格式详细解析及其官方文档参考。本文介绍了MySQL服务器如何使用不同的日志记录格式来记录二进制日志,包括早期版本中基于SQL语句的复制机制(即基于语句的日志记录)。此外,还探讨了其他日志记录方式,如基于行的日志记录和混合日志记录模式,并提供了配置和管理这些日志格式的最佳实践。 ... [详细]
  • 本文详细介绍了在 CentOS 6.7 x64 环境下配置 MySQL 5.6.29 的 GTID 主从复制方法。主库 IP 为 192.168.0.65,备库 IP 为 192.168.0.66。通过逐步指导,帮助读者顺利实现高可用性和数据一致性。 ... [详细]
  • 本文主要讲述以下几个方面:  1.元字符  2.贪婪匹配  3.实例1.元字符.匹配任意一个字符,除换行符^匹配以一个字符开头的字符串‘$’ ... [详细]
  • dovecot是一个开源的,为linuxunix-like系统提供imap,pop3服务的软件。dovecot是一个比较新的软件,由timosirainen开发,最初发 ... [详细]
  • 之前写过TensorFlowObjectDetectionAPI的部署方法,如何用样本标定工具标定自己的样本数据,以及用tensorflowkereas版本mask-rcnn进行训 ... [详细]
  • 本文深入探讨了 AdoDataSet RecordSet 的序列化与反序列化技术,详细解析了将 RecordSet 转换为 XML 格式的方法。通过使用 Variant 类型变量和 TStringStream 流对象,实现数据集的高效转换与存储。该方法不仅提高了数据传输的灵活性,还增强了数据处理的兼容性和可扩展性。 ... [详细]
  • 本文将深入探讨MySQL存储引擎的特性及其选择策略。在MySQL 5.1之前的版本中,存储引擎必须与MySQL一同编译和安装。自5.1版本起,存储引擎通过插件化接口实现,显著提升了灵活性和扩展性。文中详细分析了不同存储引擎的特点,如InnoDB、MyISAM等,并提供了针对具体应用场景的优化建议,帮助读者更好地理解和选择适合的存储引擎,以提升数据库的整体性能。 ... [详细]
  • 在处理MySQL递归查询父子节点时,若遇到“此函数未声明为DETERMINISTIC、NOSQL或READS SQL DATA”的错误,可以通过以下方法解决:首先,确保表结构正确设计,包含必要的字段用于存储节点关系。接着,创建两个函数,一个用于根据输入ID查询所有子节点及其ID,另一个用于根据输入ID查询所有父节点及其ID。在创建函数时,需明确声明函数的特性,如是否确定性、是否访问SQL数据等,以避免上述错误。调用这些函数时,确保传递正确的参数,并检查返回结果的完整性。 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • 首先,装上我们需要的pyenv,方便anaconda的安装,也可以方便后面不同python版本之间的切换 gitclonehttps:gi ... [详细]
  • sqlserver执行系统命令
    在sqlserver中是可以执行多行操作的两条sql语句可以用分号隔开sele ... [详细]
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社区 版权所有