【问题标题】:Processing CSV data in Python: Wireshark CSV, comma/list issue在 Python 中处理 CSV 数据:Wireshark CSV,逗号/列表问题
【发布时间】:2018-02-07 04:20:34
【问题描述】:

所以我试图进一步分解这个 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 赢=118 连=0” "86","26.766224","fe80::1286:8cff:fe4f:d04d","ff02::1","ICMPv6","174","Router Advertisement from 10:86:8c:4f:d0: 4d" "87","27.479193","10.0.0.23","104.70.61.253","SSL","55","继续数据"

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

【问题讨论】:

  • “有效”是什么意思?数据在哪里?
  • 如果 csv 文件使用逗号作为分隔符,为什么要指定换行符?
  • 输入行是什么样的,您希望输出行是什么样的?

标签: python csv delimited


【解决方案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])

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

你有你的开放作为传递“rt”,这不是一个有效的模式。 “r”(读取)是默认值。如果您想同时读取和写入文件(这里不是这种情况),您可以传递“r+”(加号是第二个字符)。

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 2013-04-05
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多