【问题标题】:Converting Text file in csv using python使用python转换csv中的文本文件
【发布时间】:2021-08-13 10:47:15
【问题描述】:

如何将以下文本文件转换为具有与用户、名称、公司、会话、描述、开始和结束相同列的 csv 文件

数据:05-20-21[15:55, Eur] 用户页面的用户历史记录:1

用户|姓名 |公司 |会话|说明 |开始 |结尾 | | | | |日期 |时间|日期|时间|

安迪坎特|安迪坎特| 135 |奥特 | ttstpdeman | 05-19-21|07:48|05-19-21|08:13 | | 135 | ttspt|瘦客户端| 05-19-21|07:48|05-19-21 |08:13

日期:06-20-21[15:55, Eur] 用户页面的用户历史记录:2

【问题讨论】:

  • 它包含 - + [ ]
  • 如果您复制问题中的文字会很有帮助。
  • 首先您必须确保所有行都包含相同数量的|。因此,在 python 中读取文件并删除不相关的行,例如包含 ---+-- 的行或顶部包含标题和页码的行。然后你可以使用read_csv(filename, sep='|') 看看它是否适合你。您可以在读取文件后使用.strip() 删除空格。由于您提供了文本文件的图像,我无法进一步帮助您
  • 到目前为止你有什么尝试? SO sommunity 不是来做你自己的任务的……
  • @Steven 我已经尝试了很多东西,我明天会发布它。希望你能帮助我

标签: python pandas string


【解决方案1】:

我假设您使用 for 循环逐行读取文件。我会尝试分三步解析和转换它:

第一步:标题(从开始到第一行只包含“-”)

这个很特别。您可以使用计数器来指示当前行,并使用split()strip() 提取相关信息。

第 2 步:列名(从仅由“-”组成的第一行到仅由“-”和“+”组成的第一行)

尝试读取每一行,如果它不包含“-”,则使用split("|") 拆分为单元格并使用strip() 去除空格。之后,您只需将单元格与您选择的分隔符组合起来,并将它们写入您的文件。

这里唯一的问题是组合单元格(开始和结束),如果您始终具有相同的列名,您可以处理类似于步骤 1 的组合单元格,或者您可以尝试通过阅读每个单元格的开始位置部分两次:一次用于读取每个单元格的起始位置(所有出现的“|”),一次用于数据和转换。 在这种情况下,您可以遍历每行的起始位置并测试每行是否有“|”在这些位置,如果不是,则忽略该单元格,如果不是,您可以从您的起始位置开始创建一个子字符串并拆分以获取单元格中的数据 (line[start:].split("|", 1)[0])

第 3 步:数据(从仅由“-”和“+”组成的第一行到末尾)

读取每一行并将每个出现的多个空格合并为一个,同时替换每个“|”用你的分隔符:

import re

line = re.sub(" *\| *", "[separator]", line)

之后,您可以将该行写入输出文件。

【讨论】:

  • import pandas as pd file1 = open("userhistory.txt","r+") with open("userhistory_aam50100.txt") as text_file: file1 = text_file.read() print(file1) bad_chars = [';', '+', '!', "*",'-']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 2017-11-05
  • 2023-03-28
  • 2021-11-21
  • 2018-09-20
  • 1970-01-01
  • 2018-04-30
相关资源
最近更新 更多