我目前正在尝试分离csv文件中的一些信息。所有信息都通过":"分隔。这里有一个例子:
1234567890:0987654321234:Hino:Rei:Texas:07/12/2021 12:00:00 AM::
我试图将这些值分开,但我不想在日期之后包含时间戳。目前,我是这样做的:
read = csv.reader(csv_f, delimiter=":")
for row in read:
print(row)
我得到的输出是:
['1234567890', '0987654321234', 'Hino', 'Rei', 'Texas', '07/12/2021 12', '00', '00 AM', '', '']
我试图得到的输出是:
['1234567890', '0987654321234', 'Hino', 'Rei', 'Texas', '07/12/2021', '12:00:00 AM', '', '']
有人对我如何解决这个问题有什么建议吗?出于某种原因,我想到了RegEx,但我不完全确定。。。
我认为在csv文件中最好使用与:
不同的分隔符,但如果不可能的话。
您可以通过以下方式修改当前输出:
# current output
output = ['1234567890', '0987654321234', 'Hino', 'Rei', 'Texas', '07/12/2021 12', '00', '00 AM', '', '']
# split thins up
first_part = output[:-5]
second_part = output[-5:]
# combine things back to date and time
tmp = ':'.join(second_part[:-2]).split(' ')
date = tmp[0]
time = ' '.join(tmp[1:])
作为解决问题的方法,您可以根据需要处理输出列表:
read = read[:-5] + read[-5].split()[0] + [":".join([read[-5].split()[1]] + [read[-4:-2]])]
请注意,这是一个基于数据格式的变通方法,因此您必须确保所有csv都遵循相同的模式。
读取一行后,您可以使用切片分配合并数组的这些元素:
read = csv.reader(csv_f, delimiter=":")
for row in read:
row[5:6] = [':'.join(row[5:8])]
print(row)