Импорт данных Python - PullRequest
       9

Импорт данных Python

0 голосов
/ 17 марта 2012

Я использую следующий код для импорта данных в Python:

 one=[]
 two=[]
 three=[]
 four=[]
 five=[]
 six=[]
 x=0
 for line in open('text.txt', 'r'):
     if x==2:
         column0, column1, column2, column3, column4, column5 = line.split(',')
 else:
    column0, column1, column2, column3, column4, column5 = line.split(' ')
    one.append(column0)
    two.append(column1)
    three.append(column2)
    four.append(column3)
    five.append(column4)
    six.append(column5)
    x=x+1

Этот код импортирует этот текстовый файл:

 1 2 3 4 5 6 
 1 2 3 4 5 6 
 1,2,3,4,5,6
 1 2 3 4 5 6
 1 2 3 4 5 6

Но у меня так много проблем с тем, как импортировать следующее

 1 2 3 4 5 6 
 1 2 3 4 5 6 
 1,2,3,
 4,5,6 
 1 2 3 4 5 6
 1 2 3 4 5 6

Несмотря на то, что в третьей строке есть разрыв данных, я хочу импортировать их так же, как и первый текстовый файл. Я попытался импортировать по строке, а затем с помощью числа переменных для третьей строки, но я не мог заставить его работать.

Кто-нибудь знает какие-либо ресурсы или примеры, или это может помочь? Спасибо!

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Строка for line in open('text.txt', 'r'): перебирает строки в файлах. Он не обращает внимания на ваши запятые.

Если вы хотите выполнять итерацию по элементам, а не по строкам, вы должны использовать другой цикл.

Вы, вероятно, хотите прочитать этот вопрос: Как читать числа из файла в Python? Показывает, как читать число одновременно, игнорируя разрывы строк. Вам нужно передать параметр в функцию split , чтобы он пропускал запятые и пробелы.

P.S. В вашем текущем коде if x==2: ничего не делает. Если вы действительно хотите считать строки, вам нужна функция enumerate.

1 голос
/ 17 марта 2012

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

fh  = open('Documents/import.txt').read()

for line in fh.split('\n'):
    print line.strip()
    splits = line.split()
    if  len(splits) ==1 and splits[0]== line.strip():
        splits = [item for item in line.strip().split(',') if item]
    print splits

упс ... не читал, что вы хотели попробовать это

fh  = open('Documents/import.txt').read()
the_list = []
for line in fh.split('\n'):
    print line.strip()
    splits = line.split()
    if  len(splits) ==1 and splits[0]== line.strip():
        splits = line.strip().split(',')
    if splits:the_list.append(splits)

for i in range(len(the_list)):
    print the_list[i]
    if  the_list[i][-1]=='':
        the_list[i].pop(-1)
        the_list[i].extend(the_list[i+1])
        i += 1

print the_list
1 голос
/ 17 марта 2012
  1. Вы задали девять вопросов о StackOverflow и приняли ответ только на один из них?Пожалуйста, покажите свою признательность за доброту незнакомцев и примите некоторые ответы .

  2. Сказать «Я попробовал, и это не работает» - хорошо, но как не получилось?Какое было сообщение об ошибке?Если программа вела себя неожиданно, чего вы на самом деле ожидали?

  3. Для чтения данных, разделенных запятыми (пробел?), Я думаю, вам действительно нужен модуль csv Python * С соответствующими аргументами опции delimiter он также будет читать разделенные пробелами данные, или вы можете заменить пробелы запятыми, прежде чем читать данные.
...