mondschein85
Mitglied
P.S. Du bist ja lustig
. Was ein Kodierer ist, wußte ich schon, aber nicht wie man das in Python umsetzt.
Kannst du mir das Prinzip deiner Idee erklären?

Kannst du mir das Prinzip deiner Idee erklären?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Dazu müßtest du den Text erstmal an den Stellen auseinanderschneiden und jeden Teil entsprechend verarbeiten, zum Schluß wieder zusammensetzen.Was mir gerade noch für eine Idee kommt: könnte man sagen, dass wenn <math> kommt, das Programm ein anderes Wörterbuch aufruft?
Das wär doch eigentlich eine ziemlich simple und leicht umzusetzende Idee, oder was meinst du?
Man könnte z.B. urllib.quote und urllib.unquote verwenden um die Spezialzeichen zu kodieren / dekodieren. Die <math> und </math> könnte man ja durch <specialmath> bzw. </specialmath> ersetzen damit man die kodierten Stellen nachher wiederfindet...P.S. Du bist ja lustig. Was ein Kodierer ist, wußte ich schon, aber nicht wie man das in Python umsetzt.
Kannst du mir das Prinzip deiner Idee erklären?
Ja.Also habe hier etwas zu urllib.quote() gefunden, aber es verwirrt mich ein bisschen:
Utility functions
urllib.quote(str) # Quotes a string for use in a URL
urllib.quote_plus(str) # Also replaces spaces with '+'
urllib.unquote(str) # Opposite of quote()
urllib.unquote_plus(str) # Opposite of quote_plus()
urllib.urlencode(dict) # Turns a dictionary of key=value
# pairs into a HTTP query-string
Da es sich bei den Textbausteinen innerhalb <math> um mathematische Formeln handelt, würde ja schon allein jedes "+" mit "%20" ersetzt werden, oder? :suspekt:
Das heißt, danach wär ich wieder an dem Punkt wo ich es nochmal übersetzten müsste? Oder hab ich was falsch verstanden? Achso und sobald ich unquote() mache, geht alles von allein rückgängig?Hab ich das richtig verstanden?
def encodeMath(x):
return "<special>" + urllib.quote(x.group(1)) + "</special>"
text = re.sub(r'(?s)<math>(.*?)</math>', encodeMath, text)
for trans_tuple in translate1:
# pat, debug
print "replacing " + trans_tuple[0]
text = re.sub(trans_tuple[0], trans_tuple[1], text)
print "done"
translate1 = [
( '<!--[^<!--]*-->' , r'' ),
( '→' , r'\\rightarrow' ),
( '-->' , r'\\longrightarrow' ),
# pat: => could come in the document
# ( '=>' , r'\\Rightarrow' ),
( '==>' , r'\\Longrightarrow' ),
( '<--' , "\\longleftarrow" ),
( '<-' , "\\leftarrow" ),
( '<==' , "\\Longleftarrow" ),
# pat: <= could come in the document (smaller and equal)
# ( '<=' , "\\Leftarrow" ),
( "(?s)<!--.*?-->" , '' ),
( '\[\[[a-z]{2,6}(?:-..)?:.*?\]\]' , '' ), # delete links to other languages
( '{{.*?}}' , '' ), # delete {{VARIABLES}} and {{Templates}}
( '__[A-Z]+__' , '' ),
#JM : due to the modification on the words with an '_'
( '\_\_[A-Z]+\_\_' , '' ),
# ( '(?m)^ (.*?)$' , pre_formatted ),
( '\n----+' , "\\\\vspace{2mm}\n\\hline\n" ),
( '<hr>' , "\\\\vspace{2mm}\n\\hline\n" ),
( '&' , r'\&' ),
# ( '\^' , r'\^{}' ),
( 'tableand' , r'&' ),
( "\\$" , r'\$' ),
# ( 'latexmath' , r'$' ),
( '(?s)<code>(.*?)</code>' , r'\\verb| \1 |' ),
( '(?s)<nowiki>(.*?)</nowiki>' , r'\\verb| \1 |' ),
( '§' , r'\\S'),
( '(?s)<pre>(.*?)</pre>' , r'\\fbox{\parbox{\pagewidth}{\1}}' ),
( '(?s)<blockquote>(.*?)</blockquote>' , r'\\begin{quotation}\emph{\1}\end{quotation}' ),
( '(?s)<ref>(.*?)</ref>' , r'\\begin{quotation}\1\end{quotation}' ),
( '(?s)<includeonly>(.*?)</includeonly>',r'' ),
( '(?s)<noinclude>(.*?)</noinclude>',r' ' ),
( '<br.*?>' , r'\\newline{}' ), # \\ doesn't work inside tables
# ( '^' , '^' ),
( '</?div.*>' , '' ),
( "''' *(.+?) *'''" , r'\\textbf{\1}' ),
( "'' *(.+?) *''" , r'\\textit{\1}' ),
( "(?m)^====+ *(.+?) *====+" , r'\\subsubsection{\1}' ),
( "(?m)^=== *(.+?) *===" , r'\\subsubsection{\1}' ),
( "(?m)^== *(.+?) *==" , r'\\subsection{\1}' ),
( "(?m)^= *(.+?) *=" , r'\\section{\1}' ),
( "\"(.*?)\"" , config_begindoublequote[ code ] + r'\1' + config_enddoublequote[ code ] ),
( r'(?<!\[)(http://.+?)(?=[ $\n\)])' , ExternalURL2 ),
( "\\[(http://|ftp://|mailto:)(.+?)(?: +([^\\]]+))?\\]" , ExternalURL ),
( '(?s)<sub>(.*?)</sub>' , r'$_{\\textrm{\\scriptsize \1}}$' ),
( '(?s)<sup>(.*?)</sup>' , r'$^{\\textrm{\\scriptsize \1}}$' ),
( '(?s)<center>(.*?)</center>' , r'{\\centering \1 \\\\}' ),
( '(?s)<s>(.*?)</s>' , r'{\\sout{\1}' ),
( '(?s)<u>(.*?)</u>' , r'{\\uline{\1}' ),
( '(?s)<tt>(.*?)</tt>' , r'{\\texttt{\1}' ),
( '(?s)<small>(.*?)</small>' , r'{\\small{\1}' ),
( '~' , r'{\\textasciitilde}' ),
( r'%' , r'\%' ),
( "\[\[([^\|]+?)\]\]" , WikiURL1 ),
( "\[\[([^\|]+?)\|([^\|]+?)\]\]", WikiURL2 ),
]
Dadurch das keine Spezialzeichen mehr zwischen <special> stehen...hab ich dann nciht trotzdem noch das gleiche Problem?
so und hier würde es doch trotzdem alles was zwischen <special> steht übersetzten, oder
!? da es das ja im moment auch bei math macht, oder nicht?