Python 如何根据单词将csv列拆分为多个不同的列?
我在一个csv文件中有一个数据集,它位于一列中,但列中的每一行都包含可能是具有值的列数据的数据。我不确定如何解析数据,以便数据被列数据和相关值分解。数据如下所示: A列第1行:Python 如何根据单词将csv列拆分为多个不同的列?,python,python-3.x,csv,Python,Python 3.x,Csv,我在一个csv文件中有一个数据集,它位于一列中,但列中的每一行都包含可能是具有值的列数据的数据。我不确定如何解析数据,以便数据被列数据和相关值分解。数据如下所示: A列第1行: Name:Jane Doe ID:123456 Company: J.Crew Allergies: None Age:25 Job Title: Analyst Name: John Doe ID: 654321 Company:Banana Republic Allergies: p
Name:Jane Doe
ID:123456
Company: J.Crew
Allergies: None
Age:25
Job Title: Analyst
Name: John Doe
ID: 654321
Company:Banana Republic
Allergies: peanuts
Age:32
Job Title:Manager
A列第2行:
Name:Jane Doe
ID:123456
Company: J.Crew
Allergies: None
Age:25
Job Title: Analyst
Name: John Doe
ID: 654321
Company:Banana Republic
Allergies: peanuts
Age:32
Job Title:Manager
有一百行类似于这些,我希望它将数据转换为名称列、ID列、公司列、年龄列、职务列。我想删除过敏物品
示例CSV文件:
稍后我将查找一些示例代码,但逻辑如下:
#! /usr/bin/env python
def decider(line):
try:
first_part, second_part = lines.split(':')
if first_part not in ('Name', 'Allergies'):
return ',' + second_part.strip()
elif first_part == 'Name':
return '\n' + second_part.strip()
else:
return ''
except:
return ''
with open('text.txt', 'r') as f:
myNewData = 'Name,ID,Company,Age,Job'
for lines in f.readlines():
myNewData += decider(lines)
# print(myNewData)
with open('output.csv', 'w') as fo:
fo.write(myNewData)
你有一个很好的新csv
输出将如下所示:
姓名、身份证、公司、年龄、职务简·多伊,123456,J.Crew,25岁,分析师
John Doe,654321,香蕉共和国,32岁,经理请编辑您的问题并包含文件中的实际样本数据(我们不需要全部内容,您可以更改数据以保护无辜)。行中没有逗号?如果不是,那么它就不是CSV。你能将实际文件的前几行添加到你的问题中吗?我附上了一张csv文件的示例图片。我需要以列形式输出。因此,您有一列名称,其中的行以不同的名称向下排列。这就是上面的输出将给您的结果。如果您的意思是希望数据以空格而不是逗号分隔,那么您可以将
return'、'+second\u part.strip()
行更改为return'\t'+second\u part.strip()
-您可能还想考虑将列括在引号中,这取决于您以后打算使用它的内容(\t
是制表符),谢谢您的帮助!如果我的职称后面有一些没有起始关键字的自由格式行文本,有没有一种简单的方法将其包含在职称后面的一列中?是的,需要一些重新调整。希望你说的顺序是工作名称:工作代码->换行符->自由文本(人员描述、评论等),可能包括也可能不包括换行符->使用名称重新启动结构化处理,其中自由文本中没有以“名称:”开头的行!