我有一个CSV文件与以下格式/内容,并希望看到一种更容易的方式,以进一步解析的col3内容(分隔),以包括他们到CSV文件通过使用python。
我是个新手,简单的循环方法应该是有效的,但我想知道有没有更简单更快的方法来实现这一点。
发自:
col1,col2,col3,col4
1,"David","Job=Sales Manager;Hobby=reading;Sex=Male","31"
2,"Mary","Job=Nurse;Hobby=hiking;Sex=Female","23"至:
col1,col2,Job,Hobby,Sex,col4
1,"David","Sales Manager","reading","Male","31"
2,"Mary","Nurse","hiking","Female","23"发布于 2016-12-30 01:19:08
您可以使用pandas库,它以一种非常简单的方式帮助处理表格数据:
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")
发布于 2016-12-30 01:53:31
这是一个简单的基于类的方法,包含一个解析函数和一个输出函数。
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文件的读写。这将以一致的格式返回列。但是,你会注意到一些标点符号还没有处理好。这也可以很容易地解决。
如果这种方法对你有效,请告诉我。
https://stackoverflow.com/questions/41384014
复制相似问题