我正在尝试用Python将文本文件转换为CSV

我正在尝试用Python将文本文件转换为CSV,python,python-3.x,export-to-csv,Python,Python 3.x,Export To Csv,我正在尝试用Python将文本文件转换为CSV 输入文本文件如下所示: Employee Name: Dr.john doe Designation: Professor Email: johndoe@google.com "ContactNo: 1234567, 9999999" "Qualification: M.Tech., Ph.D." Area of Interest / Specialisation: network security Employee Name: Dr. john

我正在尝试用Python将文本文件转换为CSV 输入文本文件如下所示:

Employee Name: Dr.john doe
Designation: Professor
Email: johndoe@google.com
"ContactNo: 1234567, 9999999"
"Qualification: M.Tech., Ph.D."
Area of Interest / Specialisation: network security
Employee Name: Dr. john doe2 
Designation: Professor2
Email: johndoe2@google.com
ContactNo: 222222222
"Qualification: B.Tech., Ph.D."
Area of Interest / Specialisation: network security2
Employee Name: Dr. john doe3 
Designation: Associate Professor3
Email: johndoe3@google.com
"ContactNo: 333333,4444444"
Qualification: Ph.D.
Area of Interest / Specialisation: network security3
Designation: Associate Professor4
Email: johndoe4@google.com
"ContactNo: 44444444 ,Intercom No.44444"
Qualification: : M.Sc. 
Designation: Programmer
Email: johndoe5@google.com
"ContactNo: 5555555555 ,Intercom No.5555"
Qualification: Ph.D |Computer Science
Designation: Computer Operator
Email: johndoe6@google.com
ContactNo: 666666666
"Qualification: D.C.Sc. & E.,"
Designation: Computer Operator
Email: johndoe7@google.com
"ContactNo: 777777777 ,Intercom No.77777<"
"Qualification: D.E & TC.,"
Designation: Instructor4
Email: johndoe8@google.com
"ContactNo: 8888888888 ,Intercom No.8888"
"Qualification: D.C.Sc. & E.,"`
**我尝试过各种方法,但我无法做到(我对编程非常陌生):

使用other的例子,我尝试过这一点,但我认为我的问题需要一种不同的方法:

records=“”员工姓名:john doe博士
职务:教授
电邮:johndoe@google.com
联系电话:123456799999
学历:理学硕士、博士。
感兴趣/专业领域:网络安全
对于records.split中的记录(“员工姓名”):
字段=记录。拆分('\n')
员工_Name=“NA”
名称=“NA”
ContactNo=“NA”
资格=“不适用”
专门化=“NA”
对于字段中的字段:
字段名称,字段值=field.split(“:”)
如果字段_name==“”:#这是员工姓名,因为我们在其上进行了拆分
员工姓名=字段值
如果字段名称==“指定”:
名称=字段值
如果字段_name==“ContactNo”:
ContactNo=字段值
如果字段名称==“限定”:
限定=字段值
如果字段_name==“专门化”:
专门化=字段值

这是我的第一个问题,所以请忽略问题中的任何格式错误(如果问题不正确,请不要保留问题,我会立即更新)

如果您在代码中的不同位置添加打印语句,您会发现有时
记录=''
,有时
字段='

添加几行:

for record in records.split('Employee Name'):
    if record == '':
        continue
    fields = record.split('\n')

现在应该可以成功运行了。

数据

Employee Name: Dr.john doe
Designation: Professor
Email: johndoe@google.com
"ContactNo: 1234567, 9999999"
"Qualification: M.Tech., Ph.D."
Area of Interest / Specialisation: network security
Employee Name: Dr. john doe2 
Designation: Professor2
Email: johndoe2@google.com
ContactNo: 222222222
"Qualification: B.Tech., Ph.D."
Area of Interest / Specialisation: network security2
Employee Name: Dr. john doe3 
Designation: Associate Professor3
Email: johndoe3@google.com
"ContactNo: 333333,4444444"
Qualification: Ph.D.
Area of Interest / Specialisation: network security3
这里有一个简单方法,如果有许多列(无需为每个字段编写代码)

解决方案:

import pandas as pd
tdf = pd.read_csv("D:/emp.txt",sep='\n',doublequote=False, header= None)

tdf = tdf[0].str.split(':', expand=True)

dd = tdf.groupby(0)[1].apply(lambda g: g.values.tolist()).to_dict()

df = pd.DataFrame.from_dict(dd)

# If you want to re-arrange the columns (Optional)
df = df[['Employee Name','Designation','Email','ContactNo','Qualification','Area of Interest / Specialisation']]

df.to_csv('D:/EMP.csv',index=False) #Save results in CSV format

df

     Employee Name            Designation                 Email          ContactNo    Qualification Area of Interest / Specialisation
0      Dr.john doe              Professor    johndoe@google.com   1234567, 9999999   M.Tech., Ph.D.                  network security
1   Dr. john doe2              Professor2   johndoe2@google.com          222222222   B.Tech., Ph.D.                 network security2
2   Dr. john doe3    Associate Professor3   johndoe3@google.com     333333,4444444            Ph.D.                 network security3

您好,欢迎光临,您能发布您的代码吗?这样我们就可以检查您的代码中哪些部分不起作用了。(顺便说一句:您的预期输出不是常规的CSV,因为没有逗号分隔的值)很好,您给了我们预期的结果;然而,你能不能也提到你得到的实际结果?@Quelklef感谢你指出这一点。我将在一分钟内更新它如何将输出保存在CSV文件中?
Employee Name: Dr.john doe
Designation: Professor
Email: johndoe@google.com
"ContactNo: 1234567, 9999999"
"Qualification: M.Tech., Ph.D."
Area of Interest / Specialisation: network security
Employee Name: Dr. john doe2 
Designation: Professor2
Email: johndoe2@google.com
ContactNo: 222222222
"Qualification: B.Tech., Ph.D."
Area of Interest / Specialisation: network security2
Employee Name: Dr. john doe3 
Designation: Associate Professor3
Email: johndoe3@google.com
"ContactNo: 333333,4444444"
Qualification: Ph.D.
Area of Interest / Specialisation: network security3
import pandas as pd
tdf = pd.read_csv("D:/emp.txt",sep='\n',doublequote=False, header= None)

tdf = tdf[0].str.split(':', expand=True)

dd = tdf.groupby(0)[1].apply(lambda g: g.values.tolist()).to_dict()

df = pd.DataFrame.from_dict(dd)

# If you want to re-arrange the columns (Optional)
df = df[['Employee Name','Designation','Email','ContactNo','Qualification','Area of Interest / Specialisation']]

df.to_csv('D:/EMP.csv',index=False) #Save results in CSV format

df

     Employee Name            Designation                 Email          ContactNo    Qualification Area of Interest / Specialisation
0      Dr.john doe              Professor    johndoe@google.com   1234567, 9999999   M.Tech., Ph.D.                  network security
1   Dr. john doe2              Professor2   johndoe2@google.com          222222222   B.Tech., Ph.D.                 network security2
2   Dr. john doe3    Associate Professor3   johndoe3@google.com     333333,4444444            Ph.D.                 network security3