在Python中处理CSV数据:Wireshark CSV,逗号/列表问题

时间:2018-02-07 04:20:35

标签: python csv delimited

所以我试图将这个CSV数据打破一点,然后抓取一个特定的逗号分隔文本。这是一个wireshark CSV。

import csv

with open('wifi.csv', 'rt') as csvfile:
    reader = csv.reader(csvfile, delimiter='\n', quotechar='\n')
    for row in reader:
        print(" ".join(row[0:1]))

仅打印出行。这些行包含用双引号括起来的逗号分隔对象。我正试图找到一种方法来有效地访问这些。

输出:“85”,“23.128318”,“52.86.227.189”,“10.0.0.23”,“TCP”,“56”,“[TCP重传] 443> 61541 [FIN,ACK] Seq = 32 Ack = 33 Win = 118 Len = 0“ “86”,“26.766224”,“fe80 :: 1286:8cff:fe4f:d04d”,“ff02 :: 1”,“ICMPv6”,“174”,“路由器广告从10:86:8c:4f:d0: 4D” “87”,“27.479193”,“10.0.0.23”,“104.70.61.253”,“SSL”,“55”,“继续数据”

我想单独访问这些,所以我可以抓住一个特定的。但它不像列表或任何东西,它认为它是字符串指示。

1 个答案:

答案 0 :(得分:1)

csv模块能够读取此格式数据并将该行作为字符串列表返回。我认为你的问题是你正在列出并将它连接在一起。

with open('wifi.csv') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print("The source is %s" % row[3])
        print("The protocol is %s" % row[4])

应该有效。您不需要传递分隔符或quotechar参数。在这种情况下,它们会导致您的问题,因为您说每个元素都由换行符(而不是默认的逗号)分隔。因此,您最终将整条线视为单个元素。

你打开通过" rt"这不是有效的模式。 " R" (读)是默认值。如果你想同时读写文件(这里不是这种情况),你可以传递" r +" (加号是第二个字符)。