![](/img/trans.png)
[英]extract data from .txt file and convert it into row and column in .csv format
[英]Convert txt extract to CSV
嗨,我想从 txt 文件中提取表格并将其发送到 csv 文件。 我已经制定了一个脚本来提取表格,但我无法将其转换为正确的格式。
cc = "March TXT format BRA.txt"
title = ""
i = 0
fields = [
"Gender",
"InPat St",
"Admits",
"Trans In",
"Disch",
"Deaths",
"Tran Out",
"InPat End",
"Leave Days",
"Day Only",
"Births",
"No Babies",
"Baby Days",
"Bed Days",
"Location",
"Location2",
"Date",
]
with open(cc) as data:
lines = data.readlines()[2:27]
title = lines[0].strip()
for line in lines:
line = line.split()
if len(line) == 14:
if line[0] != "Total":
if i < 2:
line += ["Ward: Rehabilitation - A Ward"]
line += ["Braeside Hospital"]
line.append(title)
else:
if i < 4:
line += ["Ward: Palliative Care - B Ward"]
line += ["Braeside Hospital"]
line.append(title)
else:
line += ["Ward: Aged Care Psychiatric - C Ward"]
line += ["Braeside Hospital"]
line.append(title)
i += 1
print(line)
结果如下:
['Female', '17', '19', '0', '22', '0', '0', '14', '0', '1', '0', '0', '0', '479', 'Ward: Rehabilitation - A Ward', 'Braeside Hospital', 'March 2021']
['Male', '15', '16', '0', '13', '0', '0', '18', '0', '0', '0', '0', '0', '497', 'Ward: Rehabilitation - A Ward', 'Braeside Hospital', 'March 2021']
['Female', '10', '7', '0', '3', '10', '0', '4', '1', '0', '0', '0', '0', '253', 'Ward: Palliative Care - B Ward', 'Braeside Hospital', 'March 2021']
['Male', '7', '17', '0', '3', '13', '0', '8', '2', '0', '0', '0', '0', '211', 'Ward: Palliative Care - B Ward', 'Braeside Hospital', 'March 2021']
['Female', '6', '4', '0', '4', '0', '0', '6', '0', '0', '0', '0', '0', '149', 'Ward: Aged Care Psychiatric - C Ward', 'Braeside Hospital', 'March 2021']
['Male', '9', '5', '0', '5', '0', '0', '9', '0', '0', '0', '0', '0', '304', 'Ward: Aged Care Psychiatric - C Ward', 'Braeside Hospital', 'March 2021']
我想将这些添加到 csv 文件中,我正在努力这样做。
谢谢您的帮助。
这在 Stackoverflow 上出现过很多次。
您可以将行转换为字符串
row = ','.join(line)
然后你可以保存在文件中
f.write(row + '\n')
你可以在你的for
循环中做到这一点
或者,如果您将所有行保留在列表中,那么您可以在最后执行此操作
data = [
['Female', '17', '19', '0', '22', '0', '0', '14', '0', '1', '0', '0', '0', '479', 'Ward: Rehabilitation - A Ward', 'Braeside Hospital', 'March 2021'],
['Male', '15', '16', '0', '13', '0', '0', '18', '0', '0', '0', '0', '0', '497', 'Ward: Rehabilitation - A Ward', 'Braeside Hospital', 'March 2021'],
['Female', '10', '7', '0', '3', '10', '0', '4', '1', '0', '0', '0', '0', '253', 'Ward: Palliative Care - B Ward', 'Braeside Hospital', 'March 2021'],
['Male', '7', '17', '0', '3', '13', '0', '8', '2', '0', '0', '0', '0', '211', 'Ward: Palliative Care - B Ward', 'Braeside Hospital', 'March 2021'],
['Female', '6', '4', '0', '4', '0', '0', '6', '0', '0', '0', '0', '0', '149', 'Ward: Aged Care Psychiatric - C Ward', 'Braeside Hospital', 'March 2021'],
['Male', '9', '5', '0', '5', '0', '0', '9', '0', '0', '0', '0', '0', '304', 'Ward: Aged Care Psychiatric - C Ward', 'Braeside Hospital', 'March 2021'],
]
with open('output1.csv', 'w') as f:
for line in data:
f.write(','.join(line) + '\n')
但是 iw 使用标准模块csv
会更安全 - 因为有时文本可能有逗号,
或换行\n
或其他可能需要使用" "
或其他方法来创建安全数据的字符。
您可以在循环中执行此操作,也可以在最后使用writerow
与每个 `line 分开
import csv
data = [ ...lines... ]
with open('output.csv', 'w') as f:
csv_writer = csv.writer(f)
for line in data:
csv_writer.writerow(line)
或使用writerows
(最后带有 char s
)一次写入
with open('output.csv', 'w') as f:
csv_writer = csv.writer(f)
csv_writer.writerows(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.