用Python解析复杂文本文件进行数据分析

2024-05-21 03:08:24 发布

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

我对Python或编程完全是个新手。在

我有一个文本文件要解析成CSV。我现在无法提供文本文件的示例。在

  1. 文本是几千行,没有回车符。在
  2. 文件中有4种类型的记录(A、B、C或I)。在
  3. 根据数据元素的大小,每个记录类型都有特定的格式。在
  4. 没有分隔符。在
  5. 在记录类型中的最后一个数据元素之后,将立即显示下一个记录类型。在
  6. 我一直在尝试从另一种语言翻译Python中的这种情况。在

这是我写的一个例子(格式不正确)

file=open('TestPython.txt'), 'r' # from current working directory
dataString=file.read()
data=()
i=0
while i < len(dataString):
i = i+2
    curChar = dataString(i)
    # Need some help on the next line var curChar = dataString[i]

    if curChar = "A"
        NPI = dataString(i+1, 16) # Need to verify that is how it is done in python inside ()
            NPI.strip()
        PCN = datastring(i+17, 40)
            PCN.strip()
        seqNo = dataString(i+41, 42)
            seqNo.strip()
        MRN = dataString(i+43, 66)
            MRN.strip()
    if curChar = "B"
        NPI = dataString(i+1, 16) # Need to verify that is how it is done in python inside ()
            NPI.strip()
        PCN = datastring(i+17, 40)
            PCN.strip()
        seqNo = dataString(i+41, 42)
            seqNo.strip()
        RC1 = (i+43, 46)
            RC1.strip()
        RC2 = (i+47, 50)
            RC2.strip() 
        RC3 = (i+51, 54)
            RC3.strip()
    if curChar = "C"
        NPI = dataString(i+1, 16) # Need to verify that is how it is done in python inside ()
            NPI.strip()
        PCN = datastring(i+17, 40)
            PCN.strip()
        seqNo = dataString(i+41, 42)
            seqNo.strip()
        DXVer = (i=43, 43)
            DXVer.strip()
        AdmitDX = (i+44, 50)
            AdmitDX.strip()
        RVisit1 = (i+51, 57)
            RVisit1.strip()

这是一段文本文件的虚拟版本。在

电话:63489564696474677 9845687 777 67834717467764674图阿努·廷布努47 ERTYNU TDFGH UU748897764 6676258966877486U6764467467774767 71236099899 O
B 794669456846334677 6756787344786474634890 7746.66 7 96 7 7 7 7 774666 44969 494 7994 99666 77478 767766
电话:098765477 64697666966667 9 99 87966 47798 797499
电话:63489564696474677 6747494 7494 7497 4964 4976 N7469 4769 N9784 9677
我79466944696474677 677769U6 8888 67764674
A 794669456846346677 6767994 777 696789989 6464467464764674 Uiun Uiti 7747 NUU 9 ATU 4 UANU OSASDF NU67479 66567896667697487U6464467476777967 7699969778 7699789度

如您所见,文件中可以有几种类型。从这个例子的粘贴方式来看,类型似乎是一行中的第一个字符。实际的文件不是这样的(我用Word制作了这个示例)。在


Tags: 文件to类型ifis记录needstrip
2条回答

你可以看看pyparsing。在

你最好边读边处理文件。在

首先,执行file.read(1)来确定下一个记录类型。在

然后,根据类型,阅读字段,如果我理解正确的话,它是固定宽度的。所以对于“A”型,应该是这样的:

^{1}$

如果文件不是ASCII文件,则需要更多的工作来正确编码并读取字符而不是字节。在

相关问题 更多 >