Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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_Csv_Object - Fatal编程技术网

python中的CSV操作

python中的CSV操作,python,csv,object,Python,Csv,Object,我希望能够像在javascript for JSON中一样更改CSV数据。只是代码和对象操作,比如- var obj = JSON.parse(jsonStr); obj.name = 'foo bar'; var modifiedJSON = JSON.stringify(obj) 要不是CSV文件和python,我怎么能这样做? 差不多- csvObject = parseCSV(csvStr) csvObject.age = 10 csvObject.name = csvObject.f

我希望能够像在javascript for JSON中一样更改CSV数据。只是代码和对象操作,比如-

var obj = JSON.parse(jsonStr);
obj.name = 'foo bar';
var modifiedJSON = JSON.stringify(obj)
要不是CSV文件和python,我怎么能这样做? 差不多-

csvObject = parseCSV(csvStr)
csvObject.age = 10
csvObject.name = csvObject.firstName + csvObject.lastName

csvStr = toCSV(csvObject)
我有一个csv文件customers.csv

ID、名称、项目、日期这些是列。csv文件的示例-

ID,LastName,FirstName,Item,Date
11231249015,Derik,Smith,Televisionx1,1391212800000
24156246254,Doe,John,FooBar,1438732800000
我很清楚python csv库可以处理它,但是它可以作为一个对象整体处理,然后进行操作吗


我基本上想要结合firstname和lastname,并对id进行一些计算,但是javascript处理JSON的方式不确定,但可能您想要使用

使用
pip安装csvmapper安装

import csvmapper

# create parser instance
parser = csvmapper.CSVParser('customers.csv', hasHeader=True)
# create object
customers = parser.buildDict() # buildObject() if you want object

# perform manipulation
for customer in customers:
    customer['Name'] = customer['FirstName'] + ' ' + customer['LastName']
    # remove last name and firstname
    # maybe this was what you wanted ?
    customer.pop('LastName', None)
    customer.pop('FirstName', None)

print customers
输出 这通过以dict的形式访问它,将firstName和lastName组合在一起,因为我认为您可能想删除lastName和firstName,用一个“name”属性替换它。如果希望像在javascript中一样访问它,可以使用
parser.buildObject()

编辑 您也可以将其保存回CSV

writer = csvmapper.CSVWriter(customers) # modified customers from the above code
writer.write('customers-final.csv')
关于能够执行数学,您可以使用自定义映射器文件,如

mapper = csvmapper.DictMapper(x = [
    [
        { 'name':'ID' ,'type':'long'},
        { 'name':'LastName' },
        { 'name':'FirstName' },
        { 'name':'Item' },
        { 'name':'Date', 'type':'int' }
    ]
]

parser = csvmapper.CSVParser('customers.csv', mapper)
并指定JSON可以设计的类型(对象、数组…),如果愿意,可以嵌套这些类型。这意味着序列化和反序列化复杂对象相对容易

另一方面,CSV只是数据的行和列。没有结构化对象、数组、嵌套等,所以基本上你必须提前知道你在处理什么,然后手动将这些映射到相应的对象

也就是说,Python的CSV模块确实有一些功能,可以让您将CSV文件作为包含CSV行的Python字典打开。它会自动将第一行/标题行映射到字段名,但也可以将字段名传递给构造函数。因此,可以使用相应的列标题/字段名从行中引用属性。它还具有相应的dict writer类。如果您不需要任何花哨的嵌套或复杂的数据结构,那么这些可能就是您真正需要的了

此示例直接来自python模块文档:

import csv
with open('names.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['first_name'], row['last_name'])

您知道Python也有这样的功能吗?您的javascript只需稍加修改即可获得相同的效果。3行代码。我想为csv文件而不是JSON执行此操作。这只是我希望能够执行此操作的一个示例。可能只有我自己,但在开始设计解决方案之前,我需要查看字符串和所需的输出。我能解释你文章中的几个问题,但我不知道你想问哪些问题。翻译:请编辑您的帖子,以包含示例输入和预期输出在CVS文件中这意味着什么:
csvObject.age
?CVS的格式与JSON完全不同。请举例说明!你好,我想知道我怎么能像开车一样驾驶飞机?好。。好。。首先停止吸毒,然后有一个非常整洁的库,名为python:处理csv文件<代码>导入csv
,试用,RTFM,然后带着一个真正的问题回来!;-)太棒了!但是,我如何使它回到CSV?
import csv
with open('names.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['first_name'], row['last_name'])