Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将CSV解析为列表或数组的更好方法_Python_Python 3.x_Csv_Numpy - Fatal编程技术网

Python 将CSV解析为列表或数组的更好方法

Python 将CSV解析为列表或数组的更好方法,python,python-3.x,csv,numpy,Python,Python 3.x,Csv,Numpy,有没有更好的方法从中创建列表或numpy数组?我要问的是如何做,如何比下面的代码更优雅地解析 fname = open("Computers discovered recently by discovery method.csv").readlines() lst = [elt.strip().split(",")[8:] for elt in fname if elt != "\n"][4:] lst2 = [] for row in lst: print(row) if r

有没有更好的方法从中创建列表或numpy数组?我要问的是如何做,如何比下面的代码更优雅地解析

fname = open("Computers discovered recently by discovery method.csv").readlines()
lst = [elt.strip().split(",")[8:] for elt in fname if elt != "\n"][4:]

lst2 = []
for row in lst:
    print(row)
    if row[0].startswith("SMZ-") or row[0].startswith("MTR-"):
        lst2.append(row)

print(*lst2, sep = "\n")

我不知道你想要什么,但是试试这个

import csv
with open("Computers discovered recently by discovery method.csv", 'r') as f:
    reader = csv.reader(f)
    ll = list(reader)

print (ll)

这应该逐行读取csv,并将其存储为列表

我不确定您想要什么,但请尝试一下

import csv
with open("Computers discovered recently by discovery method.csv", 'r') as f:
    reader = csv.reader(f)
    ll = list(reader)

print (ll)

这应该逐行读取csv并将其存储为列表

示例代码

import csv
csv_file = 'sample.csv'
with open(csv_file) as fh:
  reader = csv.reader(fh)
  for row in reader:
    print(row)
sample.csv

name,age,salary
clado,20,25000
student,30,34000
sam,34,32000

示例代码

import csv
csv_file = 'sample.csv'
with open(csv_file) as fh:
  reader = csv.reader(fh)
  for row in reader:
    print(row)
sample.csv

name,age,salary
clado,20,25000
student,30,34000
sam,34,32000
你可以随时使用。例如,

import pandas as pd
import numpy as np

df = pd.read_csv('pandas_dataframe_importing_csv/example.csv')
要转换它,您必须将其转换为您最喜欢的数字类型。我想你可以把整件事写在一行:

result = numpy.array(list(df)).astype("float")
您还可以执行以下操作:

from numpy import genfromtxt
my_data = genfromtxt('my_file.csv', delimiter=',')
你可以随时使用。例如,

import pandas as pd
import numpy as np

df = pd.read_csv('pandas_dataframe_importing_csv/example.csv')
要转换它,您必须将其转换为您最喜欢的数字类型。我想你可以把整件事写在一行:

result = numpy.array(list(df)).astype("float")
您还可以执行以下操作:

from numpy import genfromtxt
my_data = genfromtxt('my_file.csv', delimiter=',')

您可以使用pandas并指定标题列,以使其在示例文件上正常工作

import pandas as pd

df = pd.read_csv('Computers discovered recently by discovery method.csv', header=2)
您可以使用以下方式检查您的内容:

>>> df.head()
您可以使用

>>> df.columns 
要将其转换为
numpy
数组,可以使用

>>> np_arr = df.values

它提供了很多解析和读取csv文件的选项。有关详细信息,请检查

您可以使用pandas并指定标题列,以使其在示例文件中正常工作

import pandas as pd

df = pd.read_csv('Computers discovered recently by discovery method.csv', header=2)
您可以使用以下方式检查您的内容:

>>> df.head()
您可以使用

>>> df.columns 
要将其转换为
numpy
数组,可以使用

>>> np_arr = df.values

它提供了很多解析和读取csv文件的选项。有关更多信息,请检查

除非您想处理所有可能的异常和CSV格式异常,否则您不应手动解析CSV结构。Python在其
csv
模块中介绍了这一点

在您的例子中,主要的问题来自您的数据-在一个文件中似乎有两种不同的CSV结构,因此您首先需要找到第二种结构的起点。另外,从您的代码中,您似乎希望过滤掉
详细信息\u Table0\u Netbios\u Name0
之前的所有列,并且只包括
详细信息\u Table0\u Netbios\u Name0
SMZ-
MTR-
开头的行。比如:

import csv

with open("Computers discovered recently by discovery method.csv") as f: 
    reader = csv.reader(f)  # create a CSV reader
    for row in reader:  # skip the lines until we encounter the second CSV structure/header
        if row and row[0] == "Header_Table0_Netbios_Name0":
            break
    index = row.index("Details_Table0_Netbios_Name0")  # find where your columns begin
    result = []  # storage for the rows we're interested in
    for row in reader:  # read the rest of the CSV row by row
        if row and row[index][:4] in {"SMZ-", "MTR-"}:  # only include these rows
            result.append(row[index:])  # trim and append to the `result` list

print(result[10])  # etc.
# ['MTR-PC0BXQE6-LB', 'PR2', 'anisita', 'VALUEADDCO', 'VALUEADDCO', 'Heartbeat Discovery',
#  '07.12.2017 17:47:51', '13']

应该做到这一点。

除非您想处理所有可能的异常和CSV格式异常,否则您永远不应该手动解析CSV结构。Python在其
csv
模块中介绍了这一点

在您的例子中,主要的问题来自您的数据-在一个文件中似乎有两种不同的CSV结构,因此您首先需要找到第二种结构的起点。另外,从您的代码中,您似乎希望过滤掉
详细信息\u Table0\u Netbios\u Name0
之前的所有列,并且只包括
详细信息\u Table0\u Netbios\u Name0
SMZ-
MTR-
开头的行。比如:

import csv

with open("Computers discovered recently by discovery method.csv") as f: 
    reader = csv.reader(f)  # create a CSV reader
    for row in reader:  # skip the lines until we encounter the second CSV structure/header
        if row and row[0] == "Header_Table0_Netbios_Name0":
            break
    index = row.index("Details_Table0_Netbios_Name0")  # find where your columns begin
    result = []  # storage for the rows we're interested in
    for row in reader:  # read the rest of the CSV row by row
        if row and row[index][:4] in {"SMZ-", "MTR-"}:  # only include these rows
            result.append(row[index:])  # trim and append to the `result` list

print(result[10])  # etc.
# ['MTR-PC0BXQE6-LB', 'PR2', 'anisita', 'VALUEADDCO', 'VALUEADDCO', 'Heartbeat Discovery',
#  '07.12.2017 17:47:51', '13']

应该会这样。

熊猫数据框怎么样?@垃圾我还没学会。例如熊猫数据框呢?@垃圾我还没学会。例如welcomeThanks for the try:D在我的第一篇文章中有一个指向csv文件的链接。你可以下载并试用你的代码。(剧透警报:行不通)@user2978216使用csv库比自己解析csv文件更好。csv库支持通用方言以及自定义方言(如果需要)@user2978216删除csv的前3行并运行它。它会工作的。谢谢您的尝试:D在我的第一篇文章中有一个指向csv文件的链接。你可以下载并试用你的代码。(剧透警报:行不通)@user2978216使用csv库比自己解析csv文件更好。csv库支持通用方言以及自定义方言(如果需要)@user2978216删除csv的前3行并运行它,只需执行
result=df即可获得相应的numpy数组。value
True,我添加了
astype()
,以防他需要进行一些编辑。要获得相应的numpy数组,只需执行
result=df。value
True,我添加了
astype()
以防他想做一些编辑。谢谢!另外,评论也很有帮助,谢谢!此外,评论也很有帮助