python中的正则表达式仅将不同列中的匹配字符串写入输出csv
我有一个超过一百万行的数据集。不幸的是,这些柱子也不那么均匀。不幸的是,我要查找的信息有时在不同的栏目中。我是否可以以某种方式过滤并仅将其写入输出csv 数据集由以下类似字符串组成:python中的正则表达式仅将不同列中的匹配字符串写入输出csv,python,csv,Python,Csv,我有一个超过一百万行的数据集。不幸的是,这些柱子也不那么均匀。不幸的是,我要查找的信息有时在不同的栏目中。我是否可以以某种方式过滤并仅将其写入输出csv 数据集由以下类似字符串组成: 07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
我想在输出csv中写入的内容:
Date;Request(in ms)
07.11.2016;20;
07.11.2016;332;
07.11.2016;7292;
07.11.2016;3213;
07.11.2016;435;
日期的我的正则表达式:
(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d
请求期间的我的正则表达式:
[\0-9]+[ s]
我的代码:
import re
import sys
from glob import glob
with open('output.csv', 'a') as combinedFile:
combinedFile.write('Date;Request(in ms)\n') # Headers
for eachFile in glob('*.csv'):
if eachFile == 'C:/x/x/x/x/*.csv':
pass
else:
count = 0
for line in open(eachFile, 'r'):
if count != 0:
combinedFile.write(line)
count = 1
我正在寻找全球解决方案,因为不幸的是结构化解决方案不起作用。请求的字符串有时在第2列,有时在第3列
我不能在这里显示数据集,因为它是一个日志文件,包含个人信息
我提前感谢你的帮助 you_data.csv文件:
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
07.11.2016 23:20:37 Request completed in 20 ms. Request from 11.1.1.111 action=GetContent&Reference=311.1.1.111&OutputEncoding=UTF8 (11.1.1.111)
代码:
输出:
谢谢你的回答,但我没有文本字符串,我有多个csv输入。。而且csv读取没有拆分方法..我更新了代码,我不知道为什么有人投票否决我的答案,不留下评论或答案。如果csv是统一的,这将起作用。。。这对我来说毫无意义:请求的字符串有时在第二列,有时在第三列。我没有否决你的答案,我会尝试你的方法,谢谢!@Jeanderson Barros C–ndido基于示例代码,我可以做这么多,也许OP可以发布更多相同格式的假数据。您是否正在寻找恰好位于不同列上的数据?问题是如何识别或写入?在哪里尝试将regexp与行匹配?
with open('you_data.csv') as f:
lines = f.readlines()
for line in lines:
split_line = line.split()
Date = split_line[0]
Request = split_line[5]
print(Date, Request)
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20
07.11.2016 20