2009-02-12 5 views
2

J'ai besoin de script pour ajouter des guillemets dans la chaîne url de url.txtAjouter Quotes dans la chaîne url du fichier

de http://www.site.com/info.xx à "http://www.site.com/info.xx"

+0

question pourrait être plus claire. Voulez-vous lire dans un fichier texte d'URL (un à une ligne?) Et afficher les mêmes chaînes entre guillemets? – Morendil

Répondre

7
url = '"%s"' % url 

Exemple:

line = 'http://www.site.com/info.xx \n' 
url = '"%s"' % line.strip() 
print url # "http://www.site.com/info.xx" 

Rappelez-vous, en ajoutant une barre oblique inversée avant qu'un guillemet l'échappera et ne finira donc pas la chaîne.

0

écrire un ...
perl est mon langage de script préféré ... il semble que vous préfériez Python.

Je viens de lire dans le fichier et ajouter \ » avant et après ..
c'est assez facile en Perl.

cela semble plus comme une demande qu'une question ... devrait-il être sur stackoverflow?

+0

Aucune question n'est trop triviale sur StackOverflow. – strager

+0

Personnellement, je pense qu'il serait plus facile d'ajouter les guillemets en sortie (c'est-à-dire print "\" $ url \ "\ n";), mais comme vous voulez le faire. –

4
url = '"%s"' % url 

Exemple:

>>> url = "http://www.site.com/info.xx" 
>>> print url 
http://www.site.com/info.xx 
>>> url = '"%s"' % url 
>>> print url 
"http://www.site.com/info.xx" 
>>> 

Parsing partir d'un fichier:

from __future__ import with_statement 

def parseUrlsTXT(filename): 
    with open(filename, 'r') as f: 
     for line in f.readlines(): 
      url = '"%s"' % line[:-1] 
      print url 

Utilisation:

parseUrlsTXT('/your/dir/path/URLs.txt') 
+0

'.readlines()' est redondant (l'objet 'f' est déjà un itérateur sur les lignes du fichier). 'pour line dans fileinput.input(): print ''% s ''% line.rstrip()' fonctionne à la fois pour les fichiers et stdin. – jfs

0

Si 'url.txt' contient une liste des urls, une URL par ligne alors:

  • citation la première séquence de caractères non-espaces:

    $ perl -pe"s~\S+~\"$&\"~" url.txt 
    
  • ou rogner les espaces et de citer le reste:

    $ perl -nE"$_=trim; say qq(\"$_\")" url.txt 
    
+1

Il n'y a pas de fonction de trim en Perl, pas même en 5.10. Peut-être voulez-vous dire perl -nE 's/^ \ s * (. *) \ S * $/$ 1 /; disons qq/"$ _"/'url.txt –

+0

Aussi, selon le shell que vous utilisez, vous devrez peut-être échapper le $ _ dans vos exemples pour empêcher la variable de shell $ _ (plutôt que la variable Perl) d'être interpolé dans le programme. –

0

Un simple script Perl:

#!/usr/bin/perl 

use strict; 
use warnings; 

while (my $line = <>) { 
    $line =~ s/\s*(.*)\s*/$1/; 
    print qq/"$line"\n/; 
} 
Questions connexes