Ornek = "\" hata alıyorum nasıl yapabilirim?


#1

ters taksim işaretini karekter oluştururken sonda nasıl kullanabilirim_?
iki tane oluyor ama bir adet yapınca hata alıyorum
ornek = “ornek\”


#2

İki tane ters taksim işareti zaten tek bir ters taksim işareti demektir.
print("test\\")
test\
print(len("\\"))
1


#3

doğrudur ama bytelarlan işlem yaptığımda öyle olmuyor


burada olduğu gibi ornek1 decode ile çevrilemedi ama ornek2 tek taksimli büyük İ harfine çevrildi

len(ornek1) = 8
len(ornek2) = 2 gözüküyor


#4

cünkü birinin unicode tablosunda karşılığı varki çevirdi utf-8 dir decodenin tanımlamazsanız birinin utf -8 de karşılığı var diğerinde ise yok


#5

İfadenin sonuna boşluk koyun:

Ornek="elma\ "

#6

aynı sorunu bende yaşadım;

test1 = "\\xc4\\xb0" 'ı nasıl test2 = "\xc4\xb0" yapabilrim(tek taksimli)_?


#7

Karakter dizisinin başına r koyun:

r'\xc4\xb0'

r, “raw” demektir yani “ham”.


#8

test1 tek taksimli bir sonuc verir. Ama 2 yerine tek taksim kullanmak istiyorsan r kacis dizisini kullanabilirsin. Daha kullanisli.

test1 = “\xc4\xb0”
print(test1)
\xc4\xb0

test1= r"\xc4\xb0"
print(test1)
\xc4\xb0


#9

r koymak yerine repr() daha doğru olmaz mı
şöyle bir örnek vermek gerekirse chr methodu ile unicode integer bir değeri unicode karakter dizisine çevirmek için kullanıyoruz ama bildiğiniz gibi \n vs gördüğü zaman alt satıra geçebiliyor ve kodunuz tam doğru çalışmıyor o yüzden şöyle bir kod yazıp çalıştırabilirsiniz

for i in range(1,257):
     print(repr(chr(i)))

#10

Baslik muhtesem karismis :slight_smile: Herkes farkli bir sey soruyor.


Oluyor. Olmus.

ornek1 -> \xc4\xb0 (8 byte)
ornek2 -> İ (2 byte)


Ikisinin de UTF-8’de karsiligi var. Hatta bu sayfanin UTF-8 olmasi lazim, oyleyse yukaridaki oklardan sonra gorebilirsiniz karsiliklarini.


\_ uretmis oldunuz (bosluk yerine _ koydum).


a = r'test1 = "\\xc4\\xb0"'
b = r'test2 = "\xc4\xb0"'
c = a.replace('\\\\', '\\').replace('test1', 'test2')
c == b #True

repr dilin icinde bir fonksiyon. “r” kaynak kodunun bir parcasi. repr'e giren argumani veya repr'den almak yerine koda yazacagimiz degeri daha kolay (veya daha zor) yazmamizi sagliyor.

Mesela sizin kodun ciktisinda 10 icin '\n' diyor. print('\n') dersek “alt satira geciyor” ama print(r'\n') dersek \n yaziyor. (print(repr('\n')) ise '\n'.)


Onyillarca deneyimi olan programcilarin bile kafasini karistiran seyler bunlar. Ozellikle de sorunu/cozumu karsi tarafa iletirken sorun cikiyor.

Kafa karismamasi icin puf noktasi: Unicode, UTF-8, codepoint, character, string, byte gibi terimler nedir, bahsedilen ortamda nasil calisir ogrendikten sonra datanin nasil gelip nasil gittigini, nasil gosterildigini cok iyi anlayin. ­Benim yukaridaki ornekteki gibi “iki slash geliyordu, bir tane lazimdi, replace ile teke indirdim” seklinde yaklasim hatalara yol aciyor. (Yukarida sorunun ne oldugu acik olmadigi icin en duz okumayi yapip duz cevap verdim)

Iletisim icin puf noktasi: Istediginiz bilgiyi (ki genelde karakter dizisi oluyor) karsi tarafa kayipsiz aktarmanin bir yolunu bulun. Mesela bu yazida kod stilinde her karakter bir adet karakteri, kendini temsil ediyor. (Bir yerde \ + bosluk yapamadigim icin \_ yaptim.)

"\n" kac karakter? 1? 2? 4? 3?


#11

Ikisinin de UTF-8’de karsiligi var. Hatta bu sayfanin UTF-8 olmasi lazim, oyleyse yukaridaki oklardan sonra gorebilirsiniz karsiliklarini.

utf-8 de diyorsun da zaten senin şuanda yazdığın utf-8 :smiley: benim demek istediğim unicode tablosu


#12

ozur dilerim, hakikaten anlamadim