gpt4 book ai didi

python - 替换文本中的空格(多行)

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:28 33 4
gpt4 key购买 nike

我正在准备一些 data.txt 以用作 csv。我的数据如下:

 0    PT  TY LAB    PAR(0)        L2-NORM         U(1)          U(2)          U(3)          U(4)          U(5)          U(6)     
1 1 9 1 3.00000E+01 1.41129E+02 1.50000E+00 -3.33011E-11 3.59422E+01 5.05825E-10 1.23750E+02 1.05732E-09
1 -2 0 0 2.99960E+01 1.41123E+02 1.49980E+00 0.00000E+00 3.59238E+01 0.00000E+00 1.23750E+02 0.00000E+00

如果我使用

with open('data.txt', mode='r') as csv_file:
csv_reader = csv.DictReader(csv_file)
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'Column names are {", ".join(row)}')
line_count += 1
print(row)
line_count += 1

我将得到一列而不是 12 列。

我首先使用 data.strip() 删除左侧和右侧的空格。然后,我想用逗号替换空格,以正确读取 csv 数据。当我使用

re.sub(r"\s+", ",", data))

我明白

0,PT,TY,LAB,PAR(0),L2-NORM,U(1),U(2),U(3),U(4),U(5),U(6),1,1,9,1,3.00000E+01,1.41129E+02,1.50000E+00,-3.33011E-11,3.59422E+01,5.05825E-10,1.23750E+02,1.05732E-09,...

它们不再按线条组织

当我使用时

data.translate({ord(c): ',' for c in string.whitespace}))

它用逗号替换每个空格并将所有内容写在一行中

0,,,,PT,,TY,LAB,,,,PAR(0),,,,,,,,L2-NORM,,,,,,,,,U(1),,,,,,,,,,U(2),,,,,,,,,,U(3),,,,,,,,,,U(4),,,,,,,...

我想知道是否有办法获得

0,PT,TY,LAB,PAR(0),L2-NORM,U(1),U(2),U(3),U(4),U(5),U(6)     
1,1,9,1,3.00000E+01,1.41129E+02,1.50000E+00,-3.33011E-11,3.59422E+01,5.05825E-10,1.23750E+02,1.05732E-09
1,-2,0,0,2.99960E+01,1.41123E+02,1.49980E+00,0.00000E+00,3.59238E+01,0.00000E+00,1.23750E+02,0.00000E+00

最佳答案

如果您的 csv 包含问题中的文本,您可以添加分隔符 ,,如下所示:

import re
import csv

with open('data.csv', newline='') as csvfile:
reader = csv.DictReader(re.sub(r'\s+', ',', line.strip()) for line in csvfile)
for row in reader:
print(dict(row))

打印两行:

{'0': '1', 'PT': '1', 'TY': '9', 'LAB': '1', 'PAR(0)': '3.00000E+01', 'L2-NORM': '1.41129E+02', 'U(1)': '1.50000E+00', 'U(2)': '-3.33011E-11', 'U(3)': '3.59422E+01', 'U(4)': '5.05825E-10', 'U(5)': '1.23750E+02', 'U(6)': '1.05732E-09'}
{'0': '1', 'PT': '-2', 'TY': '0', 'LAB': '0', 'PAR(0)': '2.99960E+01', 'L2-NORM': '1.41123E+02', 'U(1)': '1.49980E+00', 'U(2)': '0.00000E+00', 'U(3)': '3.59238E+01', 'U(4)': '0.00000E+00', 'U(5)': '1.23750E+02', 'U(6)': '0.00000E+00'}

关于python - 替换文本中的空格(多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59204021/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com