quand python me donne une sortie en forme comme:tout supprimer de sortie qui est derrière ":"
randomfilename.txt:randomstringmniaonovinaio
Comment puis-je faire de juste
randomfilename.txt
en python/shell?
quand python me donne une sortie en forme comme:tout supprimer de sortie qui est derrière ":"
randomfilename.txt:randomstringmniaonovinaio
Comment puis-je faire de juste
randomfilename.txt
en python/shell?
>>> s = "randomfilename.txt:dslfkjsdosdfu"
>>> print s.split(":")[0]
randomfilename.txt
>>> 'randomfilename.txt:randomstringmniaonovinaio'.split(':')[0]
'randomfilename.txt'
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.
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'
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.