2015-01-30 2 views
-2

У меня есть .txt список с большим количеством строк в следующем формате:Python разделить строки в текстовом файле

3AD544532F-272|5SD32332S-F72|5FD2124L-Y21|4WA32332P-A26|6DW3224C-I72 
(...) 

Как я могу разделить эти цифры вертикальной чертой | так что я могу получить выход .txt файл со следующими пунктами:

3AD544532F-272-14 

5SD32332S-F72-12 

5FD2124L-Y21-41 

4WA32332P-A26-17 

6DW3224C-I72-41 

Я попытался использовать этот сценарий, но без правильного результата.

import sys 
output = open("output_list.txt","w") 
print("read line and put it into list or array as you like to call it") 
list = open("list.txt").read().splitlines() 
for i in list: 
     re.compiler() 
input() 
+0

посмотрите на 'split()'. Кроме того, вы импортируете 'sys', но используете' re' в вашем скрипте. – msturdy

+0

В следующий раз, пожалуйста, попытайтесь найти решение, прежде чем задавать вопрос о переполнении стека. Googling 'python split' дает соответствующие документы Python как первый хит. –

+0

Используйте 'csv' вместо этого, если это возможно. Сплит с регулярным выражением не является хорошим методом для анализа CSV-подобных данных. – nhahtdh

ответ

2

Если у вас есть строка, как этот 3AD544532F-272|5SD32332S-F72|5FD2124L-Y21|4WA32332P-A26|6DW3224C-I72

Вы можете разделить на | используя split встроенную функцию

line = `3AD544532F-272|5SD32332S-F72|5FD2124L-Y21|4WA32332P-A26|6DW3224C-I72` 
your_splitted_line = line.split("|") 
>>print your_splitted_line 
>>['3AD544532F-27','5SD32332S-F72','5FD2124L-Y21','4WA32332P-A26','6DW3224C-I72'] 
1

split() действительно лучшее решение. Альтернативой с использованием регулярного выражения является

>>> import re 
>>> text = "3AD544532F-272|5SD32332S-F72|5FD2124L-Y21|4WA32332P-A26|6DW3224C-I72" 

>>> for i in re.split('\|',text): 
...  print (i) 
... 
3AD544532F-272 
5SD32332S-F72 
5FD2124L-Y21 
4WA32332P-A26 
6DW3224C-I72 
Смежные вопросы