python dizesini baytlara

Bir nesneyi bir dize kalƒ±bƒ± kullanarak i≈ülemek istiyorsanƒ±z, re kitaplƒ±ƒüƒ±na bir dize saƒülamalƒ±sƒ±nƒ±z. "bayt‚" veri turu, "TypeError: bayt benzeri bir nesnede dize deseni kullanamazsƒ±nƒ±z‚" error.

Bu kƒ±lavuz, bu hatanƒ±n ne anlama geldiƒüi ve bu hatayla neden kar≈üƒ±la≈üabileceƒüiniz hakkƒ±nda konu≈üuyor. Hatayƒ± ç√∂zmek için hangi adƒ±mlarƒ±n atƒ±lacaƒüƒ±nƒ± g√∂rebilmeniz için size bu hatanƒ±n bir √∂rneƒüini g√∂stereceƒüiz.

TypeError: bayt benzeri bir nesnede dize kalıbı kullanamaz

Bytes nesneleri bir dizi tek bayt içerir. Dizeler gibi deƒüi≈ümezler, yani deƒüi≈ütirilemezler. Bir ikili dosya okuduƒüunuzda veya "request‚" bir web sitesinden veri almak için.

re kitaplƒ±ƒüƒ±nƒ± kullanƒ±rken, bayt veya nesneler kullanarak çalƒ±≈ümanƒ±z gerekir. Bir bayt nesnesi için dize kalƒ±plarƒ± belirtemezsiniz ve bunun tersi de geçerlidir.

Bayt verileriyle çalƒ±≈üƒ±yorsanƒ±z, programƒ±nƒ±z bayt cinsinden bir normal ifade kalƒ±bƒ± belirtmelidir. Dizelerle birlikte normal ifade kullanƒ±yorsanƒ±z, dize tabanlƒ± bir normal ifade kalƒ±bƒ± saƒülayƒ±n.

Örnek Senaryo

Bir web sayfasƒ±nƒ±n ba≈ülƒ±ƒüƒ±nƒ± alan bir program yazacaƒüƒ±z. Bu eƒüitim için Python.Engineering web sitesiyle çalƒ±≈üƒ±yoruz.

Ba≈ülamak için, ihtiyacƒ±mƒ±z olan iki kitaplƒ±ƒüƒ± içe aktaralƒ±m programƒ±mƒ±zƒ± olu≈üturmak için: urllib ve re.

urllib kitaplığı web istekleri yapmamıza izin verir ve re kitaplığı bize programımızda normal ifade kullanma yeteneği verir.

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.

Sonra, bir < Python.Engineering ana sayfasına bir href="/what-is-http/">web isteği:

Program a≈üaƒüƒ±dakilerin içeriƒüini alƒ±r Python.Engineering ana sayfasƒ±. Bu veriler, urlopen() y√∂nteminin bir parçasƒ± olan read() y√∂ntemi kullanƒ±larak okunur. Bu verileri "res‚" deƒüi≈üken.

Artƒ±k programƒ±mƒ±zdan gelen verilere sahip olduƒüumuza g√∂re, sorguladƒ±ƒüƒ±mƒ±z web sayfasƒ±ndaki etiketinin içeriƒüini bulmak için <code>search()</code> y√∂ntemini kullanƒ±n. etiketi bir web sayfasƒ±nƒ±n ba≈ülƒ±ƒüƒ±nƒ± içerir.<br></p> <p>Web sayfasƒ±nƒ±n ba≈ülƒ±ƒüƒ±nƒ± bulmak için <code>re.search()</code> y√∂ntemini kullanƒ±n:<br></p > <p>Programƒ±mƒ±z <title> etiketinin içeriƒüini arayacaktƒ±r. Programƒ±mƒ±z daha sonra web sayfasƒ±nƒ±n ba≈ülƒ±ƒüƒ±nƒ± konsola yazdƒ±rƒ±r.Bu ba≈ülƒ±ƒüƒ± dizemize eklemek için <a href="/python-f-string/">.format() y√∂ntemini</a> kullanƒ±rƒ±z. <br></p> <p>Programƒ±mƒ±zƒ± çalƒ±≈ütƒ±ralƒ±m ve çalƒ±≈üƒ±p çalƒ±≈ümadƒ±ƒüƒ±nƒ± g√∂relim:<br></p> <p>Programƒ±mƒ±z tam olarak yurutulemiyor.</p><p>"home‚" (web sayfamƒ±zdan gelen yanƒ±t) bir bayt nesnesidir, ancak bir web sayfasƒ±nƒ±n ba≈ülƒ±ƒüƒ±nƒ± bulmak için kullandƒ±ƒüƒ±mƒ±z kalƒ±p bir dizedir. Bu bir hataya neden olur çunku dize kalƒ±plarƒ±nƒ± bayt nesnelerle e≈üle≈ütiremeyiz.<br></p> <p>Bu sorunu ç√∂zmenin iki yolu vardƒ±r.</p> <h3>√á√∂zum #1: Dize Kalƒ±bƒ±nƒ± Bayt’a D√∂nu≈ütur ;</h3> <p>Kullandƒ±ƒüƒ±mƒ±z string deseni bytes nesnesine çevirmeliyiz. Bunu, "b‚" anahtar kelime veya <code>bytes()</code> y√∂ntemi:<br></p> <p>"b‚" Anahtar kelime daha yaygƒ±ndƒ±r çunku okunmasƒ± daha kolaydƒ±r. Artƒ±k dize modelimizi baytlara d√∂nu≈üturduƒüumuze g√∂re, kodumuzu çalƒ±≈ütƒ±rabiliriz:<br></p> <p>Kodumuz, sorgumuzla e≈üle≈üen metni d√∂ndurur.<br> </p> </a></div><p>Artƒ±k normal ifade yanƒ±tƒ±na sahip olduƒüumuza g√∂re, kodumuzda bir dize olarak g√∂runmesi için onu ayrƒ±≈ütƒ±rabiliriz.Normal ifade verilerini ayrƒ±≈ütƒ±rmak bu √∂ƒüreticinin kapsamƒ± dƒ±≈üƒ±ndadƒ±r. </p> <h3>√á√∂zum #2: Web Sayfasƒ± Verilerinin Kodunu √á√∂z</h3> <p>Alternatif olarak, web sayfasƒ± verilerimizi bir dize yapmak için ç√∂zmeyi seçebiliriz.Diƒüer kƒ±sƒ±mlar için bir dize bekliyorsanƒ±z bu kullanƒ±≈ülƒ±dƒ±r <br></p> <p>Web sayfasƒ±nƒ± açtƒ±ƒüƒ±mƒ±z kod satƒ±rƒ±nƒ± deƒüi≈ütirerek web sayfasƒ± verilerimizin kodunu ç√∂zebiliriz:<br></p> <p>Bu kod, yanƒ±tƒ± bir dize gibi ele alabilmemiz için web isteƒüimizden gelen yanƒ±tƒ±n kodunu ç√∂zecektir. "utf-8‚"’i e y√∂ntemiyle deƒüi≈ütirmelisiniz. Talep ettiƒüiniz web sayfasƒ±nƒ± kodlama kullanƒ±r.<br></p> <p>Ardƒ±ndan ba≈ülƒ±k etiketini aramak için bir dize kalƒ±bƒ± kullanabiliriz. Desenimizi bir bayt nesnesine d√∂nu≈üturmeye gerek yok çunku "home‚" bir dize deƒüeri olacaktƒ±r.</p> <p>Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve g√∂relim ne olur: <br></p><p>"Python.Engineeringsƒ± hayatƒ±ma en çok ihtiyacƒ±m olduƒüu anda girdi ve hƒ±zlƒ± bir ≈üekilde bir eƒüitim kampƒ±na uyum saƒülamama yardƒ±mcƒ± oldu. Mezun olduktan iki ay sonra, deƒüerlerime uygun hayalimdeki i≈üi buldum ve hayattaki hedefler!"</p> <p class="testimonial-section-faint-1">Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi</p> <p>"TypeError: bir bayt uzerinde bir dize kalƒ±bƒ± kullanamaz -benzeri nesne‚" bayt veri turu kullanƒ±larak saklanan bir nesneyle bir dize modelini e≈üle≈ütirmeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda hata olu≈üur.<br></p> <p>Bu hatayƒ± dize modelinizi bir bayt nesnesine d√∂nu≈üturerek veya birlikte çalƒ±≈ütƒ±ƒüƒ±nƒ±z verileri bir dize nesnesine d√∂nu≈üturerek.<br></p> </a></div><p>Artƒ±k bu <a href="/how-long-to-learn-python/">Python hatasƒ±nƒ± bir profesyonel gibi</a> duzeltmeye hazƒ±rsƒ±nƒ±z. !</p>