Как сохранить строки из CSV-файла в Python и распечатать данные с помощью HTML - PullRequest
2 голосов
/ 22 октября 2011

В основном моя проблема заключается в следующем: у меня есть файл CSV excel с информацией о символах Southpark, и у меня есть шаблон HTML, и мне нужно только взять данные по строкам (хранящимся в списках) для каждого символа и использоватьданный шаблон HTML реализует эти данные для создания 5 отдельных страниц HTML с фамилиями символов.

Вот изображение файла CSV: i.imgur.com/rcIPW.png

Thisэто то, что у меня есть:

askfile = raw_input("What is the filename?")

southpark = []

filename = open(askfile, 'rU')

for row in filename:
    print row[0:105]

filename.close()

Вышеприведенное выводит всю информацию об оболочке IDLE в пять строк, но мне нужно найти способ разделить каждую строку и столбец и сохранить ее в списке (что я не знаю, как это сделать).Это довольно примитивный код, который я знаю, я пытаюсь найти способ сначала сохранить строки и столбцы, затем мне придется использовать функцию (def), чтобы сначала назначить данные для шаблона HTML, а затем создать файл HTML изэти данные / шаблон ... и я до сих пор нуб, я пытался искать в сети, но я просто не понимаю, что такое.

Мне не разрешено использовать какие-либо загружаемые модули, но я могу использовать вещивстроенный в Python, как import csv или что-то в этом роде, но на самом деле он должен быть написан с помощью пары функций, списка, строк и циклов.

Как только я выясню, как разделить строки и столбцы и сохранить их,Я могу работать над внедрением в шаблон HTML и созданием файла.

Я не пытаюсь, чтобы мой HW сделал для меня, просто я просто отстой в программировании, поэтому любая помощь приветствуется!

Кстати, я использую Python 2.7.2, и если вы хотите добавить файл CSV в DL, нажмите здесь .


ОБНОВЛЕНИЕ:

Хорошо, большое спасибо!Это помогло мне понять, что печатает каждая строка и какую информацию читает программа.Теперь, так как я должен использовать функции в этой программе, я думаю именно об этом.

Каждая строка (0-6) печатает отдельные значения, но только функция печати строки печатает один символ и все его соответствующиеценности, которые мне нужны.То, что я хочу, это распечатать данные как «строка печати», но я должен хранить каждый из этих 5 символов в отдельном списке.

В основном «строка печати» печатает все 5 символов с каждым из соответствующих иматрибуты, как я могу разделить каждую из них на 5 переменных и сохранить их в виде списка?

Когда я печатаю строку [0], она только печатает имена, или печатаю строку 1 печатает только ДОБ.Я думал о создании функции def, которая принимает только вывод «строки» и разбивает на 5 переменных в цикле, а затем другая функция def берет эти переменные / списки данных и объединяет их с шаблоном HTML, и в конце я долженвыяснить, как создавать HTML-файлы в Python ..

Извините, если я вас путаю, просто пытаюсь разобраться во всем этом.Это мой код прямо сейчас, он выдает ошибку, что слишком много значений для распаковки, но я просто пытаюсь поиграть и попробовать разные вещи и посмотреть, работают ли они.Исходя из того, что я хотел сделать выше, мне, вероятно, придется удалить большую часть этого кода и найти способ переписать его с помощью функций типа списка, таких как .append или .strip, и т. Д., С которыми я не очень хорошо знаком.

import csv

original = file('southpark.csv', 'rU')

reader = csv.reader(original)

# List of Data
name, dob, descript, phrase, personality, character, apparel = []

count = 0

def southparkinfo():
for row in reader:
    count += 1
    if count == 0:
        row[0] = name
        print row[0] # Name (ex. Stan Marsh)
        print "----------------"
    elif count == 1:
        row[1] = dob
        print row[1] # DOB
        print "----------------"
    elif count == 2:
        row[2] = descript
        print row[2] # Descriptive saying (ex. Respect My Authoritah!)
        print "----------------"
    elif count == 3:
        row[3] = phrase
        print row[3] # Catch Phrase (ex. Mooom!)
        print "----------------"
    elif count == 4:
        row[4] = personality
        print row[4] # Personality (ex. Jewish)
        print "----------------"
    elif count == 5:
        row[5] = character
        print row[5] # Characteristic (ex. Politically incorrect)
        print "----------------"
    elif count == 6:
        row[6] = apparel
        print row[6] # Apparel (ex. red gloves)
    return

reader.close()

1 Ответ

6 голосов
/ 22 октября 2011

Прежде всего, взгляните на документы CSV .

Как только вы поймете основы, взгляните на этот код. Это должно привести вас к правильному пути:

import csv

original = file('southpark.csv', 'rU')
reader = csv.reader(original)

for row in reader:
    #will print each row by itself (all columns from names up to what they wear)
    print row
    print "-----------------"
    #will print first column (character names only)
    print row[0]

Вы хотите import csv модуль, чтобы вы могли работать с типом файла CSV. Откройте файл в универсальном режиме новой строки и прочитайте его с помощью csv.reader. Затем вы можете использовать цикл for, чтобы начать итерацию по строкам в зависимости от того, что вы хотите. Первый print row напечатает одну строку всех данных одного персонажа (то есть: все от их имени до типа одежды), например:

['Stan Marsh', 'DOB: October 19th', 'Dude!', 'Aww #$%^!', 'Star Quarterback', 'Wendy', 'red gloves']

-----------------
['Kyle Broflovski', 'DOB: May 26th', 'Kick the baby!', 'You ***!', 'Jewish', 'Canadian', 'Ushanka']
-----------------
['Eric Theodore Cartman', 'DOB: July 1', 'Respect My Authroitah!', 'Mooom!', 'Big-boned', 'Political
ly incorrect', 'Knit-cap!']
-----------------
['Kenny McCormick', 'DOB: March 22', 'DOD: Every other week', 'Mmff Mmff', 'MMMFFF!!!', 'Mysterion!'
, 'Orange Parka']
-----------------
['Leopold Butters Stotch', 'DOB:Younger than the others!', 'The 4th friend', 'Professor chaos', 'stu
tter', 'innocent', 'nerdy']
-----------------

Наконец, второе утверждение print row[0] предоставит вам только имена персонажей. Вы можете изменить номер, и вы сможете получить другие данные по мере необходимости. Помните, что в CSV-файле все начинается с 0, поэтому в вашем случае вы можете перейти только до 6, потому что A=0, B=1, C=2, etc... Чтобы увидеть эти результаты более четко, вероятно, будет лучше, если вы закомментируете одно из операторов print, чтобы вы получили более четкое представление о том, что вы захватываете.

-----------------
Stan Marsh
-----------------
Kyle Broflovski
-----------------
Eric Theodore Cartman
-----------------
Kenny McCormick
-----------------
Leopold Butters Stotch

Примечание Я добавил это print "-----------------", чтобы вы могли видеть различные выходы. Надеюсь, это поможет вам начать.

Редактировать Чтобы ответить на ваш второй вопрос: Самый простой способ (хотя, вероятно, не самый лучший) получить всю информацию об одном персонаже - это сделать что-то вроде этого:

import csv

original = file('southpark.csv', 'rU')
reader = csv.reader(original)

stan = reader.next()
kyle = reader.next()
eric = reader.next()
kenny = reader.next()
butters = reader.next()

print eric

который выводит:

['Eric Theodore Cartman', 'DOB: July 1', 'Respect My Authroitah!', 'Mooom!', 'Big-boned', 'Politically incorrect', 'Knit-cap!']

Обратите внимание, что если ваш CSV изменен таким образом, что порядок символов перемещается (например, кнопки перемещаются вверх), вы выводите информацию о другом символе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...