使用python转换csv中的文本文件

2024-09-20 22:54:09 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

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

数据:05-20-21[15:55,欧元]按用户划分的用户历史第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,欧元]用户历史记录按用户页:2


Tags: 文件csv数据用户名称客户端历史记录时间
1条回答
网友
1楼 · 发布于 2024-09-20 22:54:09

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

步骤1:标题(从开始到第一行仅由“-”组成)

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

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

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

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

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

阅读每一行并将多个空格的每一个引用折叠为一个,同时用分隔符替换每个“|”:

import re

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

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

相关问题 更多 >

    热门问题