python - 在 Python 中读取 .txt 文件时无意的字符带
问题描述
我有一个 Python 脚本,它从 .txt 文件中读取数据库表名,对它们执行一组 SQL 语句,然后导出一个带有结果的 .CSV 文件。.txt 文件如下所示:
TableA
TableB
TableC
我有读取该文件的代码如下所示:
f = open("table.txt", "r")
for s in f:
cfg_tbl = s[0:len(s) -1]
func_1(cfg_tbl)
f.close()
(func_1是执行sql的函数,不重要)
我遇到的问题是,当我保存 .txt 文件并且光标位于“TableC”中的“C”旁边时,“C”被截断。我必须在最后一个表之后用额外的空间保存文件,以便它工作。但如果我改变这个:
cfg_tbl = s[0:len(s) -1]
对此:
cfg_tbl = s[0:len(s)]
它出错了:
Invalid argument: 'TableA \n.csv'
任何想法如何读取 .txt 文件而不必考虑所需的额外空格,甚至是空行等。
谢谢
解决方案
您s[0:len(s) -1]
用于删除每行末尾的换行符。问题是文件的最后一行没有以换行符结尾,所以你要删除文件名的最后一个字符。
使用该strip()
方法从字符串中删除前导和尾随空格。
cfg_tbl = s.strip()
如果没有换行符,则不会删除任何内容。
顺便说一句,s[0:len(s) -1]
可以更简单地写为s[:-1]
. 当切片的结尾为负数时,它从结尾开始计数。
推荐阅读
- svn - SVN中二进制文件的自定义合并
- css - 如何更改离子输入禁用的不透明度
- javascript - org.springframework.http.converter.HttpMessageNotReadableException:缺少所需的请求正文
- lotus-notes - 使用 lotusscript 锁定当前文档
- docker - 如何为 dockerized lucee 服务器设置 hitespace 管理?
- java - Spring Controller 中 Post 方法的请求正文
- java - Androidstudio Version3.4 打不开项目结构
- sql - 在 Postgres 中正确创建索引的列顺序
- javascript - Redux:通用减速器与每个实体的减速器
- javascript - 仅在用户登录时加载页面