2012-10-12, 09:14
Hier ein kurzes Beispiel, wie man mit Python XML Dateien parsen kann. Yahoo Developer hatte dazu einen guten Artikel. Der Datensatz der ECB ist zwar ziemlich doof, da hier mehrere CUBE Tags ineinander verschachtelt sind, dies stellt mit der hier genutzten Herangehensweise kein Hindernis dar.
import xml.etree.ElementTree as ET
import urllib2
root = ET.parse(urllib2.urlopen('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml')).getroot()
for child in root[2][0]:
#print child.tag
#print child.attrib
curr = child.get('currency')
rate = child.get('rate')
print curr, rate |
import xml.etree.ElementTree as ET
import urllib2
root = ET.parse(urllib2.urlopen('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml')).getroot()
for child in root[2][0]:
#print child.tag
#print child.attrib
curr = child.get('currency')
rate = child.get('rate')
print curr, rate
UPDATE for Python 3 and pandas: https://www.uweziegenhagen.de/?p=4569.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2012-10-12, 09:10
Hier eine Erweiterung des ersten Beispiels, das eine LaTeX description Umgebung erzeugt und diese (mittels Tkinter
) auch in die Zwischenablage kopiert.
import feedparser
from Tkinter import Tk
# clipboard stuff
r = Tk()
r.withdraw()
r.clipboard_clear()
url = 'http://feeds.feedburner.com/fmylife'
d = feedparser.parse(url)
number_entries = len(d['entries']) - 1
head = "\\begin{description}\n"
print head
r.clipboard_append(head)
for i in range(0,number_entries):
entry = d['entries'][i].summary + "\n"
FMLloc = entry.find("FML<")
item = "\\item[" + str(i+1) + "] " + entry[:FMLloc] + "\n"
print item
r.clipboard_append(item)
foot = "\\end{description}\n"
print foot
r.clipboard_append(foot)
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2012-10-11, 17:04
Hier ein kurzes Beispiel, wie man mit Python und dem Feedparser Modul RSS Feeds parsen kann.
import feedparser
url = 'http://feeds.feedburner.com/fmylife'
d = feedparser.parse(url)
size = len(d['entries']) - 1
for i in range(0,size):
entry = d['entries'][i].summary + "\n"
FMLloc = entry.find("FML<")
print entry[:FMLloc] |
import feedparser
url = 'http://feeds.feedburner.com/fmylife'
d = feedparser.parse(url)
size = len(d['entries']) - 1
for i in range(0,size):
entry = d['entries'][i].summary + "\n"
FMLloc = entry.find("FML<")
print entry[:FMLloc]
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2012-03-25, 16:06
Hier ein erster Versuch, LaTeX Befehle mit PyParsing zu parsen:
from pyparsing import *
# grammar definition
commandname = Word(alphas)
leftbrace = Literal("{")
rightbrace = Literal("}")
parameter = Word(alphas)
command = Literal("\\") + commandname + leftbrace + parameter + rightbrace
# input string
mystring = "\section{hello}"
# parse input string
print mystring, "->", command.parseString(mystring) |
from pyparsing import *
# grammar definition
commandname = Word(alphas)
leftbrace = Literal("{")
rightbrace = Literal("}")
parameter = Word(alphas)
command = Literal("\\") + commandname + leftbrace + parameter + rightbrace
# input string
mystring = "\section{hello}"
# parse input string
print mystring, "->", command.parseString(mystring)
Beispiel:
\section{hello} -> [‚\\‘, ’section‘, ‚{‚, ‚hello‘, ‚}‘]
Als nächstes werde ich die Grammatik so erweitern, dass auch optionale Parameter geparst werden können. Eine Erweiterung wird dann das Parsing von Key=Value Parametern.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2012-02-22, 20:52
Hier ein kurzes Beispiel, wie man mit Python Dateien umbenennt:
- Der Shebang sorgt dafür, dass das Skript unter Linux direkt aufrufbar ist.
- import os lädt das Modul zur Dateiverwaltung, import re das Modul für reguläre Ausdrücke
- path definiert den Pfad, in dem gesucht werden soll
- die folgende Zeile sucht alle Dateien in path
- die darrauffolgende Zeile ermittelt unter diesen Dateien alle diejenigen, die auf „.None“ enden.
- Für jede dieser auf „.None“ endenden Dateien passiert dann folgendes:
- es wird der neue Name bestimmt, also „.None“ durch „.mp4“ ersetzt
- die Datei wird umbenannt
#! /usr/bin/python
import os
import re
path="/some/dir/"
files=os.listdir(path)
files = [ f for f in files if re.search('.None$', f, re.I)]
for fname in files:
newname=fname.replace(".None",".mp4")
os.rename(path + "/" + fname, path + "/" + newname) |
#! /usr/bin/python
import os
import re
path="/some/dir/"
files=os.listdir(path)
files = [ f for f in files if re.search('.None$', f, re.I)]
for fname in files:
newname=fname.replace(".None",".mp4")
os.rename(path + "/" + fname, path + "/" + newname)
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2012-01-22, 08:40
Die programmatische Erstellung von LaTeX-Code durch ein Framework hat mich schon immer interessiert, über ein stackexchange Posting (http://tex.stackexchange.com/questions/41875/generate-latex-truth-table-with-python-cheetah) wurde jetzt auch mein Interesse an der Erzeugung durch Python geweckt.
Hier ein Beispiel für die Erzeugung von LaTeX durch das Python Cheetah framework:
from Cheetah.Template import Template
definition = """\\documentclass{article}
\\title{$paper.title}
\\author{$author.name}
\\begin{document}
\\maketitle
\\end{document}"""
class author:
"""A simple example author class"""
name = "Uwe Ziegenhagen"
def f(self):
return 'Hello World'
class paper:
"""A simple example paper class"""
title = "My First paper"
def f(self):
return 'hello world'
uwe = author()
mypaper = paper()
print Template(definition, searchList=[{'author' : uwe,'paper' : mypaper}]) |
from Cheetah.Template import Template
definition = """\\documentclass{article}
\\title{$paper.title}
\\author{$author.name}
\\begin{document}
\\maketitle
\\end{document}"""
class author:
"""A simple example author class"""
name = "Uwe Ziegenhagen"
def f(self):
return 'Hello World'
class paper:
"""A simple example paper class"""
title = "My First paper"
def f(self):
return 'hello world'
uwe = author()
mypaper = paper()
print Template(definition, searchList=[{'author' : uwe,'paper' : mypaper}])
Erzeugt wird dadurch folgendes Dokument:
\documentclass{article}
\title{My First paper}
\author{Uwe Ziegenhagen}
\begin{document}
\maketitle
\end{document}
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website