2012-06-14 73 views
0

我對於Python如此光禿禿的我並不是很有經驗。我有一個文本文件,需要沿着一條線在某些字符位置進行分割。理想情況下,我想簡單地在指定的位置插入一個逗號,以便我可以將它加載到MS Access表(或類似的表)中。一條線形成的文字看起來像這樣:Python - 通過字符串位置解析文本文件

「00ZZ101喇嘛喇嘛BlaBlaBlaBla 022000G0132000R6G00BBDJ1000 091030820514布拉布拉布拉1PP」

我需要解析從0文字:4和13:29,30:32和,和33:34,依此類推......

我需要的結果本質上是逗號分隔,以便我可以將它們加載到表中。因此,基本上把前四個字符分開,然後從第13個到第29個分開,等等。文本文件中的問題在每行末尾(位於第167個字符位置)有一個回車符。所以我需要根據一些規則將每一行分成多個部分,這些規則決定了哪些數據應該組合在一起。

任何人有任何示例代碼,他們可以分享,可能會幫助我嗎?由於

+0

你能給我們一個輸入和輸出的例子嗎?作爲該示例行的結果,我還沒有看到您想要的結果。 –

+0

你是否想要在輸入中匹配一個模式? – corn3lius

+0

謝謝西蒙。我修改了我的帖子來解釋我想要的結果 – user1457123

回答

0

您有:

s = "00ZZ101 Bla Bla BlaBlaBlaBla 022000G0132000R6G00BBDJ1000 091030820514 BlaBla Bla 1PP" 

而且在Python Shell

>>> s = "00ZZ101 Bla Bla BlaBlaBlaBla 022000G0132000R6G00BBDJ1000 091030820514 BlaBla Bla 1PP" 
>>> s[0:4] 
'00ZZ' 
>>> s[13:29] 
'la BlaBlaBlaBla ' 
>>> s[30:32] 
'22' 
>>> 
+0

哇,謝謝你的快速repsonse。我會讓你知道它是怎麼回事。 – user1457123

5

從Python控制檯:

>>> s = "00ZZ101 Bla Bla BlaBlaBlaBla 022000G0132000R6G00BBDJ1000 091030820514 BlaBla Bla 1PP" 
>>> slices = [(0,4), (13,29), (30,32), (33,34)] 
>>> [s[slice(*slc)] for slc in slices] 
['00ZZ', 'la BlaBlaBlaBla ', '22', '0'] 

如果你正在讀從各行字符串輸入文本文件,這是讀取文件並依次處理每行的方法:

with open('xyzzy.txt') as sourcefile: 
    for line in sourcefile: 
     # process each line 
+0

哇,謝謝你的快速repsonse。我會讓你知道它是怎麼回事。 – user1457123

+0

我正在解析的文本文件在每行的末尾都有回車符。我是否必須建立某種循環來貫穿每條線? – user1457123

+0

Paul我在for循環之後處理每一行最困難的時間。我嘗試在切片中使用[s [slice(* slc)]用於slc語法,但它不能正常工作。就像我說過的,我是一個「新人」,對我來說很裸露。 – user1457123