linux-l: Problem mit Python und regulaeren Ausdruecken

Guntram Trebs gunni at mathematik.hu-berlin.de
Di Apr 24 13:25:09 CEST 2001


Hi Fabian,

On Tue, 24 Apr 2001, Fabian Walk wrote:

> Ich bin dabei einen Dateinamenkonverter zu schreiben der alle Leer-
> zeichen durch "_" ersätzt und alle Sonderzeichen wie "|  & ; ( ) < > []"
> aus dem Dateinamen entfernt, diesen in Kleinbuchstaben umwandelt und die 
> Datei umbenennt.

> re.sub verwenden. Gibt es vieleicht noch eine bessere Methode als mit
> regulären Ausdrücken?
 
Einen anderen einfachen Algorithmus gibt es.
Ich habe allerdings keine Ahnung von python,
deshalb gibt's zur unendlichen Freude aller
Informatik-Studenten Pseudocode:


function convert_filename ( String orig ) {
  String kopie[orig.length] = "";

  for (int i = 0; i<orig.length; i++) {
    switch( orig[i] ) {
      case ' ':
      case other_whitespace:
        kopie = kopie + '_';
        break;
      case '|':
        .
        .
        .
      case: ']':
        break;
      default:
        kopie = kopie + orig[i];
    }
  }

  return kopie;
}


Ansonsten in php mit perl-regulären ausdrücken: (nicht getestet)

function convert_filename( $subject) {
  $pattern = array();
  $replacement = array();

  $pattern[] = "[|&;()<>\[\]]";
  $replacement[] = "";

  $pattern[] = "[\\s]";
  $replacement[] = "_";

  return ereg_replace($pattern, $replacement, $subject);
}


Guntram




Mehr Informationen über die Mailingliste linux-l