python文件中用逗号分隔_在python中将空格分隔的文件转换为逗号分隔的值文件

我对Python很陌生。我知道已经有人问过这个问题,我很抱歉,但在这种新情况下,字符串之间的间距是不相等的。我有一个名为coord的文件,它包含以下空格分隔的字符串:1 C 6.00 0.000000000 1.342650315 0.000000000

2 C 6.00 0.000000000 -1.342650315 0.000000000

3 C 6.00 2.325538562 2.685300630 0.000000000

4 C 6.00 2.325538562 -2.685300630 0.000000000

5 C 6.00 4.651077125 1.342650315 0.000000000

6 C 6.00 4.651077125 -1.342650315 0.000000000

7 C 6.00 -2.325538562 2.685300630 0.000000000

8 C 6.00 -2.325538562 -2.685300630 0.000000000

9 C 6.00 -4.651077125 1.342650315 0.000000000

10 C 6.00 -4.651077125 -1.342650315 0.000000000

11 H 1.00 2.325538562 4.733763602 0.000000000

12 H 1.00 2.325538562 -4.733763602 0.000000000

13 H 1.00 -2.325538562 4.733763602 0.000000000

14 H 1.00 -2.325538562 -4.733763602 0.000000000

15 H 1.00 6.425098097 2.366881801 0.000000000

16 H 1.00 6.425098097 -2.366881801 0.000000000

17 H 1.00 -6.425098097 2.366881801 0.000000000

18 H 1.00 -6.425098097 -2.366881801 0.000000000

请注意第一列中每个字符串开始前的空格。因此,为了将其转换为csv,我尝试了以下操作:with open('coord') as infile, open('coordv', 'w') as outfile:

outfile.write(infile.read().replace(" ", ", "))

# Unneeded columns are deleted from the csv

input = open('coordv', 'rb')

output = open('coordcsvout', 'wb')

writer = csv.writer(output)

for row in csv.reader(input):

if row:

writer.writerow(row)

input.close()

output.close()

with open("coordcsvout","rb") as source:

rdr= csv.reader( source )

with open("coordbarray","wb") as result:

wtr= csv.writer(result)

for r in rdr:

wtr.writerow( (r[5], r[6], r[7]) )

当我运行脚本时,我在脚本的第一部分中为coordv得到以下结果,这当然是非常错误的:, 1, C, , , 6.00, , 0.000000000, , 1.342650315, , 0.000000000

, 2, C, , , 6.00, , 0.000000000, -1.342650315, , 0.000000000

, 3, C, , , 6.00, , 2.325538562, , 2.685300630, , 0.000000000

, 4, C, , , 6.00, , 2.325538562, -2.685300630, , 0.000000000

, 5, C, , , 6.00, , 4.651077125, , 1.342650315, , 0.000000000

, 6, C, , , 6.00, , 4.651077125, -1.342650315, , 0.000000000

, 7, C, , , 6.00, -2.325538562, , 2.685300630, , 0.000000000

, 8, C, , , 6.00, -2.325538562, -2.685300630, , 0.000000000

, 9, C, , , 6.00, -4.651077125, , 1.342650315, , 0.000000000

, 10, C, , , 6.00, -4.651077125, -1.342650315, , 0.000000000

, 11, H, , , 1.00, , 2.325538562, , 4.733763602, , 0.000000000

, 12, H, , , 1.00, , 2.325538562, -4.733763602, , 0.000000000

, 13, H, , , 1.00, -2.325538562, , 4.733763602, , 0.000000000

, 14, H, , , 1.00, -2.325538562, -4.733763602, , 0.000000000

, 15, H, , , 1.00, , 6.425098097, , 2.366881801, , 0.000000000

, 16, H, , , 1.00, , 6.425098097, -2.366881801, , 0.000000000

, 17, H, , , 1.00, -6.425098097, , 2.366881801, , 0.000000000

, 18, H, , , 1.00, -6.425098097, -2.366881801, , 0.000000000

我尝试过不同的可能性,但没有成功,到目前为止,我还没有找到任何关于我如何做到这一点的信息来源。从这个coord文件中获取逗号分隔值的最佳方法是什么?我感兴趣的是使用python中的csv模块选择列4:6,最后使用numpy导入它们,如下所示:from numpy import genfromtxt

cocmatrix = genfromtxt('input', delimiter=',')

如果有人能帮我解决这个问题,我会很高兴的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值