Сценарий Python для чтения из файла и получения значений - PullRequest
2 голосов
/ 22 июня 2010

Если в файле присутствующие значения представлены либо в «, либо в виде разделенных значений»

         "Name" "Tom" "CODE 041" "Has"
         "Address" "NSYSTEMS c/o" "First Term" "123" 18  
         "Occ" "Engineer" "Level1" "JT" 18

Как должен быть написан скрипт Python, чтобы получить все вышеуказанные значения по отдельности

Ответы [ 3 ]

3 голосов
/ 22 июня 2010

Ваш вопрос немного расплывчат, и в вашем примере нет запятых, поэтому трудно дать хороший ответ.

В вашем примере файла, содержащем

"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18

этот скрипт

import csv
reader = csv.reader(open('test.txt'), delimiter=' ', quotechar='"')
for row in reader:
    print(row)

производит

['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']

Предполагается, что разделитель между значениями является пробелом. Если это вкладка, используйте delimiter='\t'.

Вам не повезло с таким подходом, если разделители меняются по всему файлу - в этом случае они больше не являются допустимыми файлами CSV / TSV. Но все это всего лишь предположения, пока вы не предоставите реальные и актуальные примеры данных, которые вы хотите проанализировать.

1 голос
/ 22 июня 2010

Альтернативный подход к использованию csv reader.

in.txt

"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18

parse.py

for i in [line.split('"') for line in open("in.txt")]: # split on the separator
    for j in i: # for each token in the split string
        if len(j.strip())>0: # ignore empty string, like the spaces between elements
            print j.strip()

out.txt

Name
Tom
CODE 041
Has
Address
NSYSTEMS c/o
First Term
123
18
Occ
Engineer
Level1
JT
18

Но я бы назвал ваши значения " enclosed.И я не вижу никаких , separated.Не могли бы вы расширить свои тестовые данные?Показать несколько строк с разделенными значениями, и я раскрою мой код.

0 голосов
/ 22 июня 2010

Используйте модуль CSV, он будет правильно обрабатывать все типы разделителей и кавычек, написание такого кода с использованием split и т. Д. Не тривиально

import csv
import StringIO

data = '''"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18"
'''

reader = csv.reader(StringIO.StringIO(data), delimiter=' ')
for row in reader:
    print row

Выход:

['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...