我有一个包含以下格式/内容的CSV文件,并希望看到一种更简单的方法来进一步解析col3内容(分隔),以便使用python将它们包含到CSV文件中。
我是新手,简单的循环方法应该有效,但我想知道实现它的任何更简单,更快捷的方法。
自:
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"
答案 0 :(得分:0)
您可以使用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")
答案 1 :(得分:0)
这是一个简单的类基本方法,具有解析函数和输出函数。
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文件的写作。这将以一致的格式返回列。但是你会注意到一些没有被处理过的标点符号。这也很容易解决。
如果这种方法适合您,请告诉我。