Posts tagged ‘Python’

XML Feeds parsen mit Python 2

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

UPDATE for Python 3 and pandas: https://www.uweziegenhagen.de/?p=4569.

Uwe

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

RSS Feeds parsen mit Python II

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

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

RSS Feeds parsen mit Python

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]

Uwe

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

LaTeX Befehle parsen mit PyParsing – Teil 1

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)

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

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

Mit Python Dateien umbenennen

Hier ein kurzes Beispiel, wie man mit Python Dateien umbenennt:

  1. Der Shebang sorgt dafür, dass das Skript unter Linux direkt aufrufbar ist.
  2. import os lädt das Modul zur Dateiverwaltung, import re das Modul für reguläre Ausdrücke
  3. path definiert den Pfad, in dem gesucht werden soll
  4. die folgende Zeile sucht alle Dateien in path
  5. die darrauffolgende Zeile ermittelt unter diesen Dateien alle diejenigen, die auf „.None“ enden.
  6. Für jede dieser auf „.None“ endenden Dateien passiert dann folgendes:
    1. es wird der neue Name bestimmt, also „.None“ durch „.mp4“ ersetzt
    2. 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)

Uwe

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

Mit Python LaTeX-Code erzeugen

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}])

Erzeugt wird dadurch folgendes Dokument:

\documentclass{article}

\title{My First paper}
\author{Uwe Ziegenhagen}

\begin{document}

\maketitle

\end{document}

Uwe

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