2024-09-20 22:54:09 发布
网友
如何将以下文本文件转换为csv文件,该文件具有与用户、名称、公司、会话、说明、开始和结束相同的列
阿坎特|安迪·坎特| 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
我假设您使用for循环逐行读取文件。我将尝试分三步对其进行解析和转换:
步骤1:标题(从开始到第一行仅由“-”组成)
这个很特别。您可以使用计数器指示当前行,并使用split()和strip()提取相关信息
split()
strip()
步骤2:列名(从仅由“-”组成的第一行到仅由“-”和“+”组成的第一行)
尝试读取每一行,如果它不包含“-”,则使用split("|")分割为单元格,使用strip()去除空格。之后,您只需将单元格与您选择的分隔符组合,然后将它们写入文件
split("|")
这里唯一的问题是组合单元格(开始和结束),如果您总是有相同的列名,或者您可以尝试通过读取部件两次来查看每个单元格的开始位置:一次用于读取每个单元格的开始位置(所有出现的“|”)和一次用于数据和转换,则可以处理与步骤1类似的组合单元格(开始和结束)。 在这种情况下,您可以迭代每一行的起始位置,并测试每一行在这些位置是否有一个“|”,如果没有,则忽略单元格,如果没有,则可以从起始位置创建一个子字符串,并拆分以获取单元格中的数据(line[start:].split("|", 1)[0])
line[start:].split("|", 1)[0]
步骤3:数据(从仅由“-”和“+”组成的第一行到结尾)
阅读每一行并将多个空格的每一个引用折叠为一个,同时用分隔符替换每个“|”:
import re line = re.sub(" *\| *", "[separator]", line)
之后,您可以将该行写入输出文件
我假设您使用for循环逐行读取文件。我将尝试分三步对其进行解析和转换:
步骤1:标题(从开始到第一行仅由“-”组成)
这个很特别。您可以使用计数器指示当前行,并使用
split()
和strip()
提取相关信息步骤2:列名(从仅由“-”组成的第一行到仅由“-”和“+”组成的第一行)
尝试读取每一行,如果它不包含“-”,则使用
split("|")
分割为单元格,使用strip()
去除空格。之后,您只需将单元格与您选择的分隔符组合,然后将它们写入文件这里唯一的问题是组合单元格(开始和结束),如果您总是有相同的列名,或者您可以尝试通过读取部件两次来查看每个单元格的开始位置:一次用于读取每个单元格的开始位置(所有出现的“|”)和一次用于数据和转换,则可以处理与步骤1类似的组合单元格(开始和结束)。 在这种情况下,您可以迭代每一行的起始位置,并测试每一行在这些位置是否有一个“|”,如果没有,则忽略单元格,如果没有,则可以从起始位置创建一个子字符串,并拆分以获取单元格中的数据(
line[start:].split("|", 1)[0]
)步骤3:数据(从仅由“-”和“+”组成的第一行到结尾)
阅读每一行并将多个空格的每一个引用折叠为一个,同时用分隔符替换每个“|”:
之后,您可以将该行写入输出文件
相关问题 更多 >
编程相关推荐