我是Python或編程的完全新手。在Python中解析用於數據分析的複雜文本文件
我有一個文本文件解析成CSV。我目前無法提供文本文件的示例。
- 該文本是幾(千)行沒有回車。
- 文件中有四種類型的記錄(A,B,C或I)。
- 每種記錄類型都有基於數據元素大小的特定格式。
- 沒有分隔符。
- 緊接在記錄類型中的最後一個數據元素之後,出現下一個記錄類型。
- 我一直在試圖從不同的語言翻譯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 TUANU TINBUNIU 47 ERTYNU TDFGH UU748897764 66762589668777486U6764467467774767 7123609989 9 O
乙79466945684634677 676756787344786474634890 7746.66 7 96 4 7 7 9 7 774666 44969 494 7994 99666 77478 767766
乙098765477 64697666966667 9 99 87966 47798 797499
C 63489564696474677 6747494 7494 7497 4964 4976 N7469 4769 N9784 9677
I 79466944696474677 677769U6 8888 67764674
甲79466945684634677 6767994 777 696789989 6464467464764674 UIIUN UITTI 7747 NUU 9 ATU 4 UANU OSASDF NU67479 66567896667697487U6464467476777967 7699969978 7699969978 9 O
正如你可以看到,可以有幾個文件中的每個類型的。這個例子粘貼的方式,看起來類型是一行上的第一個字符。實際文件(我在Word中創建此示例)不是這種情況。
您需要提供至少某種格式的抽象或問題變得無可辯駁。 – root
如果我正確讀取它,則首先將整個文件抽成一個字符串。這有點瘋狂,你應該只在內存中讀取一點點並處理它們。 – flup
您應該嘗試使用python的python CSV模塊:http://docs.python.org/2/library/csv.html,它可能允許您在一行中讀入數據... – Alex