Python re.findall 输出到 CSV 仅有时有效
Python re.findall output to CSV only works sometimes
有一些代码可以在一个字符串中找到一些匹配的术语,在我的例子中是一个日志文件,我试图将实例输出到一个 csv 文件,它可以工作,但只是有时。如果我有太多 amny 变量,它似乎会中断并输出一个空白的 csv,否则它实际上可以工作。
作品:
z = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
with open('/out.csv','w') as file:
for x,y in zip(z,rec):
file.write(x + ',' +y)
file.write('\n')
给我一个空白的 csv:
i = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
da = re.findall("(?<=DA\=)\w+", resp)
oa = re.findall("(?<=OA\=)\w+", resp)
st = re.findall("(?<=DELIVERED\=)\w+", resp)
pr = re.findall("(?<=PRICE\=)\w+", resp)
net = re.findall("(?<=NETWORK\=)\w+", resp)
cn = re.findall("(?<=COUNTRY\=)\w+", resp)
gw = re.findall("(?<=GATEWAY\=)\w+", resp)
msg = re.findall("(?<=MSG\=)\w+", resp)
file = (i + ',' + rec + ',' + da + ',' + oa + ',' + st + ',' + pr + ',' + net + ',' + cn + ',' + gw + ',' + msg)
with open('out.csv','w') as file:
for a,b,c,d,e,f,g,h,j,k in zip(i,rec,da,oa,st,pr,net,cn,gw,msg):
file.write(a + ',' + b + ',' + c + ',' + d + ',' + e + ',' + f + ',' + g + ',' + h + ',' + j + ',' + k)
file.write('\n')
也许我想多了或者做错了。本质上是希望输出将这些输出转换成 csv 格式。如果我很笨,请随时嘘我。
使用 pandas 包含的函数 pd.to_csv(...)
并将信息存储在 DataFrame 中不是更容易吗?
Write DataFrame to a comma-separated values (csv) file. See
Pandas
类似于:
i = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
da = re.findall("(?<=DA\=)\w+", resp)
oa = re.findall("(?<=OA\=)\w+", resp)
st = re.findall("(?<=DELIVERED\=)\w+", resp)
pr = re.findall("(?<=PRICE\=)\w+", resp)
net = re.findall("(?<=NETWORK\=)\w+", resp)
cn = re.findall("(?<=COUNTRY\=)\w+", resp)
gw = re.findall("(?<=GATEWAY\=)\w+", resp)
msg = re.findall("(?<=MSG\=)\w+", resp)
indices = ("i", "rec", "da", "oa", "st", "pr", "net", "cn", "gw", "msg")
data = pd.DataFrame(data=zip(i, rec, da, oa, st, pr, net, cn, gw, msg), index=indices)
pd.DataFrame.to_csv(data, "out.csv")
@JSimonsen:
让我们看看这是否可以解决问题?
i = ['one', 'two']
rec = ['three', 'four']
da = ['five', 'six']
oa = ['seven', 'eight']
indices = ["col1", "col2"]
df = pd.DataFrame(data=zip(i, rec, da, oa), index=indices)
df.to_csv('out.csv')
因为我没有你正在使用的数据,这只是我可以尝试的一个简单示例,但是 re.findall()
returns strings 的列表。因此它应该有效...
有一些代码可以在一个字符串中找到一些匹配的术语,在我的例子中是一个日志文件,我试图将实例输出到一个 csv 文件,它可以工作,但只是有时。如果我有太多 amny 变量,它似乎会中断并输出一个空白的 csv,否则它实际上可以工作。
作品:
z = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
with open('/out.csv','w') as file:
for x,y in zip(z,rec):
file.write(x + ',' +y)
file.write('\n')
给我一个空白的 csv:
i = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
da = re.findall("(?<=DA\=)\w+", resp)
oa = re.findall("(?<=OA\=)\w+", resp)
st = re.findall("(?<=DELIVERED\=)\w+", resp)
pr = re.findall("(?<=PRICE\=)\w+", resp)
net = re.findall("(?<=NETWORK\=)\w+", resp)
cn = re.findall("(?<=COUNTRY\=)\w+", resp)
gw = re.findall("(?<=GATEWAY\=)\w+", resp)
msg = re.findall("(?<=MSG\=)\w+", resp)
file = (i + ',' + rec + ',' + da + ',' + oa + ',' + st + ',' + pr + ',' + net + ',' + cn + ',' + gw + ',' + msg)
with open('out.csv','w') as file:
for a,b,c,d,e,f,g,h,j,k in zip(i,rec,da,oa,st,pr,net,cn,gw,msg):
file.write(a + ',' + b + ',' + c + ',' + d + ',' + e + ',' + f + ',' + g + ',' + h + ',' + j + ',' + k)
file.write('\n')
也许我想多了或者做错了。本质上是希望输出将这些输出转换成 csv 格式。如果我很笨,请随时嘘我。
使用 pandas 包含的函数 pd.to_csv(...)
并将信息存储在 DataFrame 中不是更容易吗?
Write DataFrame to a comma-separated values (csv) file. See Pandas
类似于:
i = re.findall("(?<=ID\=)\w+", resp)
rec = re.findall("(?<=RECEIVED\=)\w+", resp)
da = re.findall("(?<=DA\=)\w+", resp)
oa = re.findall("(?<=OA\=)\w+", resp)
st = re.findall("(?<=DELIVERED\=)\w+", resp)
pr = re.findall("(?<=PRICE\=)\w+", resp)
net = re.findall("(?<=NETWORK\=)\w+", resp)
cn = re.findall("(?<=COUNTRY\=)\w+", resp)
gw = re.findall("(?<=GATEWAY\=)\w+", resp)
msg = re.findall("(?<=MSG\=)\w+", resp)
indices = ("i", "rec", "da", "oa", "st", "pr", "net", "cn", "gw", "msg")
data = pd.DataFrame(data=zip(i, rec, da, oa, st, pr, net, cn, gw, msg), index=indices)
pd.DataFrame.to_csv(data, "out.csv")
@JSimonsen: 让我们看看这是否可以解决问题?
i = ['one', 'two']
rec = ['three', 'four']
da = ['five', 'six']
oa = ['seven', 'eight']
indices = ["col1", "col2"]
df = pd.DataFrame(data=zip(i, rec, da, oa), index=indices)
df.to_csv('out.csv')
因为我没有你正在使用的数据,这只是我可以尝试的一个简单示例,但是 re.findall()
returns strings 的列表。因此它应该有效...