替换多余的空格以格式化cs

2024-05-16 07:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大量的数据在一个.txt文件格式如下。。。在

WOODY, Harlan Fred                 S2c        USN
WOOD, Earl A.                      PVT        USAR
WOOD, Frank                        S2c        USN
WOOD, Harold Baker                 BM2c       USN
WOOD, Horace Van                   S1c        USN
WOOD, Roy Eugene                   F1c        USN
WOOLF, Norman Bragg                CWTP       USN
WORKMAN, Creighton Hale            F1c        USN

我想把它变成像这样的csv格式。。。在

^{pr2}$

我看到在Python中我可以使用regex和/或split,但是我需要保留名字和姓氏之间的空格。如您所见,大多数条目之间的空间计数是不同的,偶尔也会出现选项卡(我想)。在


Tags: 数据franktxtfredpvtbakerwoodusn
3条回答
line = 'WOODY, Harlan Fred                 S2c        USN'
print(line[:35].rstrip().split(', ') + line[35:].split())

输出:

^{pr2}$

这里有一种方法-先在逗号上拆分,然后在多个空格上拆分,以避免拆分单间距的名称。然后用逗号将所有项目与str.join连接起来:

with open(textfile) as f, open(csvfile, 'w') as fc:
    for line in f:
        first, others = line.split(',')
        row = [first] + [i.strip() for i in others.split('   ') if i]
        fc.write(','.join(row) + '\n')

pandasread_csv与regex分隔符一起使用。Pandas将比用纯python编写的解决方案更快。在

import pandas as pd
pd.read_csv('./s.dat',header=None, delimiter=r"\s+") 
          0          1       2     3     4
0    WOODY,     Harlan    Fred   S2c   USN
1     WOOD,       Earl      A.   PVT  USAR
2     WOOD,      Frank     S2c   USN   NaN
3     WOOD,     Harold   Baker  BM2c   USN
4     WOOD,     Horace     Van   S1c   USN
5     WOOD,        Roy  Eugene   F1c   USN
6    WOOLF,     Norman   Bragg  CWTP   USN
7  WORKMAN,  Creighton    Hale   F1c   USN

相关问题 更多 >