首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Python解析CSV文件的分隔列并使其成为CSV文件的一部分

如何用Python解析CSV文件的分隔列并使其成为CSV文件的一部分
EN

Stack Overflow用户
提问于 2016-12-30 00:57:46
回答 2查看 53关注 0票数 0

我有一个CSV文件与以下格式/内容,并希望看到一种更容易的方式,以进一步解析的col3内容(分隔),以包括他们到CSV文件通过使用python。

我是个新手,简单的循环方法应该是有效的,但我想知道有没有更简单更快的方法来实现这一点。

发自:

代码语言:javascript
运行
复制
col1,col2,col3,col4 
1,"David","Job=Sales Manager;Hobby=reading;Sex=Male","31"
2,"Mary","Job=Nurse;Hobby=hiking;Sex=Female","23"

至:

代码语言:javascript
运行
复制
col1,col2,Job,Hobby,Sex,col4 
1,"David","Sales Manager","reading","Male","31"
2,"Mary","Nurse","hiking","Female","23"
EN

回答 2

Stack Overflow用户

发布于 2016-12-30 01:19:08

您可以使用pandas库,它以一种非常简单的方式帮助处理表格数据:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.read_csv("xxx.csv")

new_df = pd.concat([df.drop('col3', axis=1), 
                    df.col3.apply(lambda s: pd.Series(dict(tuple(p.split('=')) for p in s.split(";"))))], 
                    axis=1)

要写出为.csv,只需调用to_csv()new_df.to_csv("newXXX.csv")

票数 0
EN

Stack Overflow用户

发布于 2016-12-30 01:53:31

这是一个简单的基于类的方法,包含一个解析函数和一个输出函数。

代码语言:javascript
运行
复制
import csv

class Person:

    def __init__(self, string):
        self.attributes = {}
        data = string.split(",")
        self.attributes["id"] = data[0]
        self.attributes["name"] = data[1]
        self.attributes["age"] = data[3]

        self.parse_data(data[2])

    def parse_data(self, data):
        for attr in data.split(";"):
            entry = attr.split("=")
            self.attributes[entry[0]] = entry[1]

    def return_data(self):
        return ','.join(self.attributes.values())

input = '''1,"David","Job=Sales Manager;Hobby=reading;Sex=Male","31"
2,"Mary","Job=Nurse;Hobby=hiking;Sex=Female","23"'''

people = []

for line in input.split("\n"):
    person = Person(line)
    people.append(person)

print(','.join(people[0].attributes.keys())) # print the keys

for person in people:
    print(person.return_data()) # print the data

轻量级(并且相对容易使用),我留下了对csv文件的读写。这将以一致的格式返回列。但是,你会注意到一些标点符号还没有处理好。这也可以很容易地解决。

如果这种方法对你有效,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41384014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档