Thread View: pl.comp.lang.python
8 messages
8 total messages
Started by Michal Wawrzyniuk
Fri, 22 Jul 2011 21:10
Konwersja "\t" do char
Author: Michal Wawrzyniuk
Date: Fri, 22 Jul 2011 21:10
Date: Fri, 22 Jul 2011 21:10
8 lines
910 bytes
910 bytes
Witam! Ostatnio probowalem przekonwertowac podany parametr string "\t" dwa znaki do char jeden znak bezskutecznie. Moze jakies pomysly Dzieki wielkie Michal
Re: Konwersja "\t" do char
Author: Roman Dobosz
Date: Sat, 23 Jul 2011 09:35
Date: Sat, 23 Jul 2011 09:35
16 lines
1464 bytes
1464 bytes
On Fri, 22 Jul 2011 22:10:03 +0100
Michal Wawrzyniuk <mwawrzyn07@gazeta.pl> wrote:
> Witam!
>
> Ostatnio probowalem przekonwertowac podany parametr string "\t" dwa
> znaki do char jeden znak bezskutecznie. Moze jakies pomysly
replace?
parametr.replace("\\t", "\t")
--
-^- _ coś tam w tle sobie gra, np:
_ /O)_\// Synæsthesia - Door To The Other Side
(_(|__(_(_) grf.
Re: Konwersja "\t" do char
Author: Michal Wawrzyniuk
Date: Sat, 23 Jul 2011 11:35
Date: Sat, 23 Jul 2011 11:35
23 lines
1377 bytes
1377 bytes
Dzieki!
Ale nie o to mi chodzi
Wytlumacze lepiej
parametr = '\t' (moze to byc dowolny znak tez \n ogolnie delimiter dla
CSV \t wartosc wprowadzona przez uzytkownika len = 2)
teraz jak to pezkonwertowac do char '\t' len = 1, ord('\t') = 9
Wiem mozna to zrobic chocby przez zwykle if czy case ale chodzi mi o
to czy cos takiego sie da zrobic?
M
W dniu 7/23/2011 10:35 AM, Roman Dobosz pisze:
>
> replace?
>
> parametr.replace("\\t", "\t")
>
Re: Konwersja "\t" do char
Author: Jordan Szubert
Date: Sat, 23 Jul 2011 16:28
Date: Sat, 23 Jul 2011 16:28
33 lines
1591 bytes
1591 bytes
Dnia 23-07-2011 o 13:35:08 Michal Wawrzyniuk <mwawrzyn07@gazeta.pl>
napisał(a):
> Dzieki!
>
> Ale nie o to mi chodzi
> Wytlumacze lepiej
>
> parametr = '\t' (moze to byc dowolny znak tez \n ogolnie delimiter dla
> CSV \t wartosc wprowadzona przez uzytkownika len = 2)
>
> teraz jak to pezkonwertowac do char '\t' len = 1, ord('\t') = 9
> Wiem mozna to zrobic chocby przez zwykle if czy case ale chodzi mi o
> to czy cos takiego sie da zrobic?
>
> M
>
>
>
>
> W dniu 7/23/2011 10:35 AM, Roman Dobosz pisze:
>>
>> replace?
>>
>> parametr.replace("\\t", "\t")
>>
>
określ dokładniej co chcesz, podaj więcej przykładów, nie tylko legalnych
(np. co jak użytkownik poda "dupa")
--
Jordan Szubert
Re: Konwersja "\t" do char
Author: Michal Wawrzyniuk
Date: Sat, 23 Jul 2011 18:57
Date: Sat, 23 Jul 2011 18:57
17 lines
1629 bytes
1629 bytes
>> > > określ dokładniej co chcesz, podaj więcej przykładów, nie tylko > legalnych (np. co jak użytkownik poda "dupa") > Jak zrobic to inaczej to wiem nie ma problemow. Tylko chodzi mi o konwersje znaku 'escape' \t zakodowanego w stringu czyli dwa znaki do jedengo zanku char '\t' metoda z substring dziala tylko chodzi mi o ogolne rozwiaznie dla jakiegokolwiek znaku escape np. \t, \n, \r czyli: uzytkownik podaje jeden ze znakow \t, \n, \r Teraz jak zmodyfikowac string2 zeby string1=string2 metoda z replace dziala ale w tym przypadku musielibysmy znac ktory to jest znak specjalny czy sie nie zrobic jakies ogolnej konwersji z '\\?' ---> '\?'
Re: Konwersja "\t" do char
Author: Jordan Szubert
Date: Sat, 23 Jul 2011 19:31
Date: Sat, 23 Jul 2011 19:31
61 lines
2896 bytes
2896 bytes
Dnia 23-07-2011 o 20:57:51 Michal Wawrzyniuk <mwawrzyn07@gazeta.pl>
napisał(a):
>>>
>>
>> określ dokładniej co chcesz, podaj więcej przykładów, nie tylko
>> legalnych (np. co jak użytkownik poda "dupa")
>>
>
> Jak zrobic to inaczej to wiem nie ma problemow. Tylko chodzi mi o
> konwersje znaku 'escape' \t zakodowanego w stringu czyli dwa znaki do
> jedengo zanku char '\t' metoda z substring dziala tylko chodzi mi o
> ogolne rozwiaznie dla jakiegokolwiek znaku escape np. \t, \n, \r
>
>
> czyli: uzytkownik podaje jeden ze znakow \t, \n, \r
>
> Teraz jak zmodyfikowac string2 zeby string1=string2 metoda z replace
> dziala ale w tym przypadku musielibysmy znac ktory to jest znak
> specjalny czy sie nie zrobic jakies ogolnej konwersji z '\\?' ---> '\?'
istnieje funkcja eval, ale to bardzo rzadko jest właściwe rozwiązanie, a i
tak należałoby ją jakoś opakować...
albo coś w tę stronę:
def UserInputToChar(s:str)->str:
"""konwertuje ,,opis'' znaku do znaku
interpretuje znaki specjalne jak Python3, z wyjątkiem \N
pisane w kliencie news, nie testowane
"""
if not (isinstance(s,str) and s):
raise Exception("input must be non-empty string")
if s[0]!='\\':
if len(s)==1:
return s
else:
raise Exception("multiple characters not allowed")
else:
spc="\n\t\r\v\f\b\a\\\'\""
spc={repr(c)[2]:c for c in spc}
dts='0123456789abcdefABCDEF'
if len(s)==2 and s[1] in spc:
return spc[s[1]]
elif len(s)==4 and s[1]=='x' and set(dts).issuperset(s[2:]):
# \xhh
return chr(int(s[2:],16)
elif len(s) in {2,3,4} and set(dts[:8]).issuperset(s[1:])
# \ooo \oo \o
return chr(int(s[1:],8)
elif len(s)==6 and s[1]=='u' and set(dts).issuperset(s[2:]):
# \uXXXX
return chr(int(s[2:],16)
elif len(s)==10 and s[1]=='U' and set(dts).issuperset(s[2:]):
# \UXXXXXXXX
return chr(int(s[2:],16)
raise Exception("unparseable input",s)
--
Jordan Szubert
Re: Konwersja "\t" do char
Author: Rob Wolfe
Date: Sat, 23 Jul 2011 19:56
Date: Sat, 23 Jul 2011 19:56
35 lines
1852 bytes
1852 bytes
Michal Wawrzyniuk <mwawrzyn07@gazeta.pl> writes:
>>>
>>
>> określ dokładniej co chcesz, podaj więcej przykładów, nie tylko
>> legalnych (np. co jak użytkownik poda "dupa")
>>
>
> Jak zrobic to inaczej to wiem nie ma problemow. Tylko chodzi mi o
> konwersje znaku 'escape' \t zakodowanego w stringu czyli dwa znaki do
> jedengo zanku char '\t' metoda z substring dziala tylko chodzi mi o
> ogolne rozwiaznie dla jakiegokolwiek znaku escape np. \t, \n, \r
>
>
> czyli: uzytkownik podaje jeden ze znakow \t, \n, \r
>
> Teraz jak zmodyfikowac string2 zeby string1=string2 metoda z replace
> dziala ale w tym przypadku musielibysmy znac ktory to jest znak
> specjalny czy sie nie zrobic jakies ogolnej konwersji z '\\?' --->
> \?'
Chyba chodzi Ci o to:
>>> s = r'aaa\tbbb\n'
>>> s
'aaa\\tbbb\\n'
>>> len(s)
10
>>> s2 = s.decode('string-escape')
>>> s2
'aaa\tbbb\n'
>>> len(s2)
8
RW
Re: Konwersja "\t" do char
Author: Michal Wawrzyniuk
Date: Sat, 23 Jul 2011 21:24
Date: Sat, 23 Jul 2011 21:24
7 lines
1138 bytes
1138 bytes
Dzieki Wielkie! Tez myślałem o eval. Ale skoro nie ma oneline rozwiązania to trudno trzeba kodować. Dobrej nocy :)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads