gpt4 book ai didi

python - 解析具有随机间距和重复文本的文本文件?

转载 作者:行者123 更新时间:2023-12-01 20:20:02 28 4
gpt4 key购买 nike

我正在尝试解析一个具有不一致间距和重复行的大型文本文件。文件中的很多文本我不需要,但例如在一行中我可能需要 6 个项目,有些用逗号分隔,有些用空格分隔。

示例行:1 23456 John,Doe 366: F.7

我想要的(CSV格式):1 2456 John Doe 366 F.7(全部作为他们自己的单元格)

最终,我试图将输出获取到 CSV,并且希望我已经尝试在文件中逐行进行到目前为止,将我试图按其特定空间提取的组件分开,但我觉得有一个更好的方法。

import csv

def is_page_header(line):
return(line[0] == '1') and ("RUN DATE:" not in line)

def read_header(inFile):
while True:
line = inFile.readline()
if '************************' in line:
break

def is_rec_start(line):
try:
x = int(line[0:6])
return True
except:
return False

filename = r"TEXT_TEST.txt"

inFile = open(filename)

while True:
line = inFile.readline()

if line == "\n":
continue
elif line == "":
break
elif is_page_header(line):
read_header(inFile)
elif is_rec_start(line):
docketno = int(line[0:6])
fileno = line[8:20]
elif 'FINGERPRINTED' in line:
fingerprinted = True
else:
print(line)

最佳答案

您可以使用正则表达式

import re
import csv
pattern = re.compile("(\d+)\s+(\d+)\s*(\w+)\s*\,\s*(\w+)\s*(\d+)\s*\:\s*([\w\.]+)")
with open("TEXT_TEST.txt") as txt_file, open("CSV_TEST.csv", "w") as csv_file:
csv_writer = csv.writer(csv_file)
for line in txt_file:
g = pattern.findall(line)
if g: csv_writer.writerows(g)

(\d+) :\d匹配从 0 到 9 的任意数字,+ after 表示匹配一个或多个,()用于捕获和提取信息以进行进一步处理。

\s+ :\s匹配空白,+一个或多个。

\s* :*之后\s匹配零个或多个空格。

\w : 用于匹配 A-Z 范围内的字符, a-z , 0-9

[]用于匹配特定字符,例如。 [abc]只会匹配单个 a , b ,或c信,没有别的,所以[\w\.]匹配A-Z , a-z , 0-9. , \之前.用于转义正则表达式中具有特殊含义的字符。

\d \w \s * + . [] () re.findall

关于python - 解析具有随机间距和重复文本的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59142331/

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