#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 перемещен в начало), вы выведете информацию о другом символе.