Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cmd strip

8 views
Skip to first unread message

remy

unread,
Jan 18, 2012, 8:03:59 AM1/18/12
to
bonjour

il n'y a pas un petit probleme

remy@remy:~/Bureau/odb2/code$ python
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> tx='0140\r'
>>> rx=tx+'\n414000000010\n\n>'
>>> print tx
0140
>>> print rx
0140
414000000010

>
>>> print rx.strip(tx).strip('\n').strip('4'+tx[1:3]).strip('\n\n>')
000000010
>>> print rx.strip(tx+'\n').strip('4'+tx[1:3]).strip('\n\n>')

>>> print rx.strip(tx+'\r\n').strip('4'+tx[1:3]).strip('\n\n>')

>>>


pourquoi il faut que je fasse
rx=rx.strip(tx)
rx=rx.strip('\n')
print rx

et pas

rx=rx.strip(tx+'\n')
print rx

une idee peut etre

merci remy


--
http://remyaumeunier.chez-alice.fr/

Alain Ketterlin

unread,
Jan 18, 2012, 10:26:20 AM1/18/12
to
remy <re...@fctpas.fr> writes:

> il n'y a pas un petit probleme

Ah ben d'accord alors.

>>>> tx='0140\r'
>>>> rx=tx+'\n414000000010\n\n>'

> pourquoi il faut que je fasse
> rx=rx.strip(tx)
> rx=rx.strip('\n')
> print rx
>
> et pas
>
> rx=rx.strip(tx+'\n')
> print rx

strip() n'enlève des caractères qu'aux extrémités, et *pas* à
l'intérieur de la chaîne. strip('a').strip('b') n'est donc pas
équivalent à strip('ab') (par exemple sur 'abax').

-- Alain.

Pierre Maurette

unread,
Jan 18, 2012, 12:19:51 PM1/18/12
to
Alain Ketterlin :
Il me semble que le piège le plus ... piégeux est dans l'interprêtation
de la chaîne paramètre, qu'il faut lire comme une liste de caractères
(chaînes de longueur unité, en Python ?). Cette chaîne est nommée
/chars/ dans la documentation, d'ailleurs. Et également dans la
compréhension de ce qui se passe précisément quand on applique deux
fois strip(). 'abax'.strip('a').strip('b') enlève d'abord autant de
caractères a successifs que possible aux deux bouts de 'abax' (ici, un
seul, à gauche). Ensuite on applique strip('b') au résultat, c'est à
dire qu'on enlève autant de caractères b successifs que possible aux
deux bouts de 'bax', le résultat est donc 'ax'.
'abax'.strip('b').strip('a') donnerait un autre résultat ('bax').
'abax'.strip('ab') ne fera qu'une passe. Enfin, une double passe, un
coup à gauche, un coup à droite. Il enlève à chacun des bouts autant de
caractères a ou b successifs que possible.
C'est peut-être plus simple de le voir comme l'application récursive
d'un strip() qui n'enlèverait qu'un caractère.
'abax'.strip('ba') donnera le même résultat, bien entendu.

--
Pierre Maurette


remy

unread,
Jan 19, 2012, 7:29:07 AM1/19/12
to
ok d'ou le retour '>' subtil le bouzin ...

remy

unread,
Jan 19, 2012, 7:58:24 AM1/19/12
to

non désoler mais je doit être boucher


tx
'0140\r'

rx
'0140\r\n414000000010\n\n>'

rx.strip(tx)
'\n414000000010\n\n>'

ok la cmd a sorti '0140\r'

rx.strip(tx).strip('\n')
'414000000010\n\n>'

ok le premier a sorti '0140\r' le deuxième a sortie '\n'
et rien a la fin

maintenant

rx.strip(tx+'\n')
'>'

la cmd a donc sortie 0140\r\n414000000010\n\n
et cela me pose un petit pb de comprendre


par contre

rx='abaaaaaedax'
rx.strip('a')
'baaaaaedax'

ok la cmd a sorti a

rx.strip('ab')
'edax'
ok la cmd a sorti tout les a et b

ce qui ne me pose pas de problème de compréhension

merci pour vos Lumière

remy

--
http://remyaumeunier.chez-alice.fr/

Pierre Maurette

unread,
Jan 19, 2012, 9:44:01 AM1/19/12
to
remy :
> non désoler mais je doit être boucher
>
>
> tx
> '0140\r'
>
> rx
> '0140\r\n414000000010\n\n>'
>
> rx.strip(tx)
> '\n414000000010\n\n>'
>
> ok la cmd a sorti '0140\r'

Essayez:
ty = '140\r' # ou '\r041' ou '1\r04' etc.
print rx.strip(ty)
Même sortie. Et c'est normal.

> rx.strip(tx).strip('\n')
> '414000000010\n\n>'
>
> ok le premier a sorti '0140\r' le deuxième a sortie '\n'
> et rien a la fin

Normal.

> maintenant
>
> rx.strip(tx+'\n')
> '>'
>
> la cmd a donc sortie 0140\r\n414000000010\n\n
> et cela me pose un petit pb de comprendre

tx+'\n' == '0140\r\n'
regardez list(tx+'\n') et set(list(tx+'\n'))

Reportez-vous à ma réponse précédente (confuse, j'en conviens), ou à la
documentation de base:

<doc python 2.7>
str.strip([chars])
Return a copy of the string with the leading and trailing characters
removed. The chars argument is a string specifying the set of
characters to be removed. If omitted or None, the chars argument
defaults to removing whitespace. The chars argument is not a prefix or
suffix; rather, all combinations of its values are stripped:

>>> ' spacious '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
</doc python 2.7>

Ici, rien ne sera strippé à droite (le '>' n'est pas dans le set).
En revanche, tous les caractères à partir de la gauche et jusqu'au '>'
non compris sont dans le set et seront donc strippés.




> par contre
>
> rx='abaaaaaedax'
> rx.strip('a')
> 'baaaaaedax'
>
> ok la cmd a sorti a
>
> rx.strip('ab')
> 'edax'
> ok la cmd a sorti tout les a et b
>
> ce qui ne me pose pas de problème de compréhension
>
> merci pour vos Lumière
>
> remy

--
Pierre Maurette


remy

unread,
Jan 19, 2012, 10:27:31 AM1/19/12
to
Le 19/01/2012 15:44, Pierre Maurette a écrit :
> Return a copy of the string with the leading and trailing characters
> removed. The chars argument is a string specifying the set of characters
> to be removed. If omitted or None, the chars argument defaults to
> removing whitespace. The chars argument is not a prefix or suffix;
> rather, all combinations of its values are stripped:

combinaisons de ses valeurs et oui merci je me coucherai moins con
puisque dans

0140\r\n414000000010\n\n>

si je vire 0 ,1,4,0,\r,et \n il ne me reste plus que >

remy




--
http://remyaumeunier.chez-alice.fr/

0 new messages