سؤال

أنا استخدم urllib2 لقراءة في صفحة.أحتاج إلى إجراء تعبير عادي سريع على المصدر وسحب بعض المتغيرات ولكن urllib2 يتم تقديمه ككائن ملف بدلاً من سلسلة.

أنا جديد على لغة بايثون لذا أجد صعوبة في معرفة كيفية استخدام كائن ملف للقيام بذلك.هل هناك طريقة سريعة لتحويل هذا إلى سلسلة؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام بيثون في طريقة تفاعلية للبحث عن حلول.

وإذا f هو الكائن الخاص بك، يمكنك إدخال dir(f) لتشاهد كل الأساليب والصفات. هناك واحدة تسمى read. أدخل help(f.read) ويقول لك أن f.read() هو السبيل لاسترداد سلسلة من كائن الملف.

نصائح أخرى

من الوثيقة قراءة الملف () (تأكيدي):

ملف.قراءة([الحجم])

قراءة الحد الأقصى لحجم البايت من الملف (أقل إذا وصلت القراءة إلى EOF قبل الحصول على بايت الحجم).إذا كانت وسيطة size سالبة أو محذوفة، فاقرأ جميع البيانات حتى يتم الوصول إلى EOF. يتم إرجاع البايتات ككائن سلسلة.يتم إرجاع سلسلة فارغة عند مواجهة EOF على الفور.(بالنسبة لملفات معينة، مثل ttys، فمن المنطقي مواصلة القراءة بعد الضغط على EOF.) لاحظ أن هذه الطريقة قد تستدعي وظيفة C الأساسية fread أكثر من مرة في محاولة للحصول على أقرب بايت ممكن الحجم.لاحظ أيضًا أنه عندما تكون في وضع عدم الحظر، قد يتم إرجاع بيانات أقل مما هو مطلوب، حتى لو لم يتم تحديد معلمة الحجم.

انتبه إلى أن البحث عن regexp على كائن سلسلة كبيرة قد لا يكون فعالاً، وفكر في إجراء البحث سطرًا تلو الآخر، باستخدام الملف التالي () (كائن الملف هو مكرر خاص به).

ومايكل فوورد، ويعرف أيضا باسم Voidspace له تعليمي ممتاز على urllib2 التي يمكنك العثور هنا: urllib2 - المفقودون دليل

ما تقومون به يجب أن تكون واضحة جدا، ومراقبة هذه التعليمات البرمجية:

import urllib2
import re
response = urllib2.urlopen("http://www.voidspace.org.uk/python/articles/urllib2.shtml")
html = response.read()
pattern = '(V.+space)'
wordPattern = re.compile(pattern, re.IGNORECASE)
results = wordPattern.search(html)
print results.groups()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top