Как сохранить строки из файла CSV в Python и распечатать данные с помощью HTML

#python #html #excel #csv

#python #HTML #excel #csv

Вопрос:

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

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

Это то, что у меня есть до сих пор:

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

southpark = []

filename = open(askfile, 'rU')

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

filename.close()
  

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

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

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

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

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


Обновить:

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

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

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

Когда я делаю print row [0], он выводит только имена, или print row1 печатает только DOB. Я думал о создании функции def, которая принимает только print «row» и разбивается на 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. Почему бы вам не просмотреть конспекты лекций? Я уверен, что ваш проф. должно быть, вы рассмотрели некоторые простые данные?

Ответ №1:

Прежде всего, взгляните на документы 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 изменен таким образом, что порядок символов перемещен (например, butters перемещен в начало), вы выведете информацию о другом символе.