【问题标题】:Loop through .txt to create two delimiters depending on data index循环 .txt 以根据数据索引创建两个分隔符
【发布时间】:2021-09-29 20:52:41
【问题描述】:

所以我有许多文件(1000ish),每个文件都有 90k 多行,其中数据以不正确的格式记录,我正在尝试重新格式化 txt 文件。

目前的数据是这样的:

9/3/2021 00 00 00 -0.18 -2.40 -2.40
2021 年 9 月 3 日 00 00 01 -0.18 -2.40 -2.40
2021 年 9 月 3 日 00 00 02 -0.18 -2.40 -2.40
2021 年 9 月 3 日 00 00 03 -0.17 -2.40 -2.40
.....

但是,它应该看起来像

9/3/2021,00:00:00,-0.18, , ,-2.40,-2.40
9/3/2021,00:00:01,-0.18, , ,-2.40,-2.40
9/3/2021,00:00:02,-0.18, , ,-2.40,-2.40
9/3/2021,00:00:03,-0.17, , ,-2.40,-2.40
....

我已经设法浏览了所有内容并添加了一个“,”

input = open(os.path.expanduser("~/Desktop/ssdat/SegY TidalCorrection 03092021.txt"))
content = input.read()
content = content.replace(" ", ",")
print(content)

导致输出:
9/3/2021,17,22,47,0.20,1511.10,-2​​.12,-2.29
9/3/2021,17,22,48,0.01,1511.10,-2​​.29,-2.29
9/3/2021,17,22,49,-0.17,1511.05,-2.41,-2.29
9/3/2021,17,22,50,-0.14,1511.02,-2.34,-2.30

所以我想我的问题是如何遍历所有内容以创建两个新的分隔符?

【问题讨论】:

  • 你能举一个你想要的输出的例子吗?我不清楚您所说的“两个新分隔符”是什么意思。
  • 谁应该使用数据?消费者不能将他的逻辑从分隔符 A 更改为分隔符 B 吗?
  • @danoscarmike 你好,所以基本上数据看起来像:9/3/2021 00 00 00 -0.18 -2.40 -2.40 但是它应该看起来像 9/3/2021, 00:00:00, -0.18, , , -2.40, -2.40 在第二种情况下,它是一个日期、时间(每秒以 ':' 作为分隔符),然后在该行的其余部分返回一个 ' , '跨度>
  • @balderman Heyya,消费者是一个应用程序,它将使用这些值对潮汐高度的差异进行校正,如果它的格式不正确,它根本不会接受数据。我已经更改了创建 txt 文件的原始应用程序,不再出现此问题,但我有很多数据需要手动更改,因此正在寻找更好的脚本解决方案。

标签: python database loops delimiter


【解决方案1】:

类似于@bret-hogg 的回答。但是,如果您只对在每一行上重新创建一个简单的字符串感兴趣,那么以下方法将起作用:

import os


with open("your_old_file.txt", "r") as text_file, open("your_new_file.txt", "w") as csv_file:
    for line in text_file:
        fields = line.split(" ")
        date = fields[0]
        time = fields[1] + ":" + fields[2] + ":" + fields[3]
        replacement_row = f"{date},{time},{fields[4]},,,{fields[5]},{fields[6]}"
        csv_file.write(replacement_row)

【讨论】:

  • 嘿!这完全有效,但是为了使数据干净,必须在最后添加一个 \n 到 replacement_tow 。做了新的行:)
【解决方案2】:

一种选择是逐行遍历文本文件,然后逐个字符。假设您已经知道应该如何格式化数据,那么您可以查找空格并将其替换为所需的分隔符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多