2011-04-25 2 views

Répondre

2
>>> s = "randomfilename.txt:dslfkjsdosdfu" 
>>> print s.split(":")[0] 
randomfilename.txt 
2
>>> 'randomfilename.txt:randomstringmniaonovinaio'.split(':')[0] 
'randomfilename.txt' 
1

Dans le shell, vous pouvez utiliser cut:

python yourscript.py | cut --delim=":" -f 1 

Seule la chaîne avant la première : sera imprimé. Si vous ne voulez pas obtenir ces lignes sans :, au cas où de telles lignes apparaîtraient dans votre programme, vous pouvez également ajouter -s à la commande.

0

La méthode split est inefficace si vous le faites souvent, dans ce cas, il pourrait être préférable d'utiliser:

>>> s='randomfilename.txt:randomstringmniaonovinaio' 
>>> s[:s.find(':')] 
'randomfilename.txt' 
0

Les autres utilisateurs ont donné les réponses Python. Si, pour une raison quelconque, vous vouliez le faire avec des utilitaires Unix, je pense que vous pouvez simplement aller:

randomFileName=`echo $yourString | sed 's/^\(.*\.txt\):.*/\1/'` 

C'est juste une opération de substitution sed.

Le bit entre parenthèses à échappement correspond simplement à n'importe quel jeu de caractères qui se termine par .txt et le stocke dans un tampon. Le bit suivant correspond à deux-points et à n'importe quel texte après. Le ^ signifie correspondre au début de $yourString.

Le \1 remplace alors tout ce qui correspond à ce qui se trouve dans le premier tampon de motif. Dans ce cas, ce devrait être votre nom de fichier aléatoire.

Questions connexes