python - 在每个元素的位置替换字符
问题描述
我有一个填充数据的 txt 文件,我想将文本的每一行写入DATA
Python 中调用的列表的元素,每一行/元素如下所示:
data[0] = EPH21 2017-05-05T00:30 2375.50 2376.50 2375.50 2376.50 712 0
data[1] = EPH21 2017-05-05T01:00 2376.50 2376.75 2375.50 2375.75 821 0
data[2] = EPH21 2017-05-05T01:30 2376.00 2376.00 2374.75 2375.25 1453 0
我想将每一行/元素修改为有","
而不是空格,所以它看起来像一个 CSV 文件。我也想用“替换"T"
时间戳中包含的内容",
。最后我想将修改后的列表写入一个新的文本文件。
更改后,我希望我的列表如下所示:
data[0] = EPH21,2017-05-05,00:30,2375.50,2376.50,2375.50,2376.50,712,0
data[1] = EPH21,2017-05-05,01:00,2376.50,2376.75,2375.50,2375.75,821,0
data[2] = EPH21,2017-05-05,01:30,2376.00,2376.00,2374.75,2375.25,1453,0
我怎样才能做到这一点?我试过这段代码,但到目前为止没有运气:
file = open("EPH21_30 Minutes.txt", "r")
data = []
for line in file:
data.append(line)
for element in data:
element.replace(" ", ",")
element.replace("T", ",")
MyFile = open('output.txt','w')
for element in data:
MyFile.write(element)
MyFile.write('\n')
MyFile.close()
解决方案
字符串是不可变的。str.replace
返回新的值,它不会更改原始字符串。
所以问题出在这部分:
for element in data:
element.replace(" ", ",")
element.replace("T", ",")
保持你的结构,它应该是这样的:
result = []
for element in data:
tmp = element.replace(" ", ",")
tmp = tmp.replace("T", ",")
result.append(tmp)
缩短的解决方案:使用列表推导:
with open("EPH21_30 Minutes.txt", "r") as file:
data = [line.replace(" ", ",").replace("T", ",") for line in file]
with open('output.txt','w') as MyFile:
for element in data:
MyFile.write(element)
MyFile.write('\n')
[我也曾经with
自动关闭文件,因为您似乎没有关闭输入文件。]
推荐阅读
- mysql - 即使 MySQL sql_mode 不包含 NO_ZERO_DATE 我仍然收到`Mysql2::Error: Incorrect date value: '0000-00-00'`
- ios - 通过 AFNetworking 建立连接时,强制我的应用使用 VPN 配置?
- python - 如何在不使用 python 提取的情况下读取或附加指定的文件?
- javascript - 无法将带有 jquery 的元素附加到使用 ajax 请求的数据中
- spring-boot - Spring Boot : log4j2.xml next to app.jar not read in production environment
- javascript - 在使用 JS 维护行结构的同时将 JSON 转换为 CSV 的最佳方法
- jenkins - 无法连接到存储库
- angular - angular - 基于 HTTP 响应显示通知
- python - 使用相同的 TemplateView 创建和更新
- python - python pandas计算平均值