gpt4 book ai didi

python - 使用Python对按行和列分隔的数据进行数据处理

转载 作者:行者123 更新时间:2023-12-01 08:53:50 30 4
gpt4 key购买 nike

我有一个由行(日期时间行)分隔的数据

01-Jan-1990 00:00:01 ABCD
A abcde fghijk lmnopq
hsjfne qqq # EDITED WITH ADDITONAL SPILL OVER DATA with \t
B abcde fghijk lmnopq
01-Jan-1990 00:00:05 ABCD
A ancfjhr sfjerhj egen
C etfhw3uh uhuefwh fewvjh dfeg efwbywgefb
D wrf fcwewe fvwefwe fwef
01-Jan-1990 00:00:07 ABCD
A wfw fbebwu
B fewhuf ifgiwejhifgj fijweij

想要以某种方式清理它,将 A、B、C 等分开,如日期时间行之后的第一个值作为一列和 A、B、C 之后的值作为另一列所示接下来捕获日期时间并作为另一列输入。像这样的事情

A,abcde fghijk lmnopq hsjfne qqq, 01-Jan-1990 00:00:01 #WOULD LIKE TO COMBINE THE SPILL DATA
B,abcde fghijk lmnopq, 01-Jan-1990 00:00:01
A,ancfjhr sfjerhj egen,01-Jan-1990 00:00:05
C,etfhw3uh uhuefwh fewvjh dfeg efwbywgefb,01-Jan-1990 00:00:05
D,wrf fcwewe fvwefwe fwefe,01-Jan-1990 00:00:05

etc etc etc

如果有人能指导我,我将不胜感激。我尝试通过进行模式匹配来阅读,然后抓取以下几行,但无法完成它。

import re
#Log Reading

log=open("IDM.txt","r")


for line in log:
splitLine = line.split()
iterator = iter(splitLine)
datematch = (re.match('^(([0-9])|([0-2][0-9])|([3][0-1])-
(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-\\d{4}$',splitLine[0]))
if datematch:
print(line)

了解上面的代码与我想要实现的目标完全不同,因此希望你们帮助我指导我并表明我已经尝试过一些东西。感谢您的宝贵时间

已编辑:包括第三行数据,以显示第二行数据的值溢出,行前有\t 制表符

最佳答案

使用 with open() 打开文件总是一个好主意,然后您可以根据需要在列表中解析行,在我的例子中,我只是检查了前 2 行该行的字符是否为数字,如果是,则存储稍后要添加到所需行的值:

import csv
content = []

with open('IDM.txt','r') as f:
lines = f.readlines()
for idx,line in enumerate(lines):
if line[:2].isdigit():
date = line[:20]

elif idx == len(lines)-1 or (line[0] != ' ' and lines[idx+1][0] != ' '):
data = line[0] + ',' + line[1:].rstrip('\n')
content.append(data+ ', '+ date)

elif lines[idx+1][0] == ' ':
spill = lines[idx+1].rstrip('\n').strip()
data = line[0] + ',' + line[1:].rstrip('\n') + ' ' + spill
content.append(data+ ', '+ date)

else:
pass


with open('IDMOutput.csv','w') as f:
for line in content:
f.write("%s\n" % line)

>>content
['A, abcde fghijk lmnopq hsjfne qqqqq, 01-Jan-1990 00:00:01',
'B, abcde fghijk lmnopq, 01-Jan-1990 00:00:01',
'A, ancfjhr sfjerhj egen, 01-Jan-1990 00:00:05',
'C, etfhw3uh uhuefwh fewvjh dfeg efwbywgefb, 01-Jan-1990 00:00:05',
'D, wrf fcwewe fvwefwe fwef, 01-Jan-1990 00:00:05',
'A, wfw fbebwu, 01-Jan-1990 00:00:07',
'B, fewhuf ifgiwejhifgj fijweij, 01-Jan-1990 00:00:07']

已编辑:添加了 rstrip 以删除 '\n' 并包含 timestamp 并在输出中溢出更新的问题。

关于python - 使用Python对按行和列分隔的数据进行数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916743/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com