我在.txt文件中有一个TON数据格式如此...
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格式......
WOODY,Harlan Fred,S2c,USN
我在Python中看到我可以使用正则表达式和/或拆分,但我需要保留名字和姓氏之间的空格。如您所见,大多数条目的空间数量不同,偶尔的标签也可能出现(我认为)。
答案 0 :(得分:2)
这是一种方法 - 首先拆分逗号然后在多个空格上拆分以避免拆分单个间隔的名称。然后使用逗号- name: Add hosts to /etc/hosts
lineinfile:
dest=/etc/hosts
line='{{ item.dest }} {{ item.src }}'
regexp='.*{{ item.src }}.*'
state=present
with_items:
- "{{ hosts[service_name] }}"
when: (service_name in hosts)
加入所有项目:
'dict object' has no attribute u'blah'
答案 1 :(得分:1)
将pandas
read_csv
与正则表达式分隔符一起使用。 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
答案 2 :(得分:0)
line = 'WOODY, Harlan Fred S2c USN'
print(line[:35].rstrip().split(', ') + line[35:].split())
输出:
['WOODY', 'Harlan Fred', 'S2c', 'USN']
答案 3 :(得分:0)
另一种方法是用逗号替换每个双空格,然后在逗号上拆分,然后剥离非空值,最后用逗号连接。将以下内容应用于文本文件中的每一行:
','.join([x.strip() for x in line.replace(' ',',').split(',') if x])