7.5 ფაილში ძებნა
როცა ფაილში მონაცემებს ეძებ, ყველაზე გავრცელებული ნიმუშია, რომ წაიკითხო
ფაილი, დააიგნორო ხაზების უმეტესობა და დაამუშავო მხოლოდ ის ხაზები, რომელიც ემთხვევა
კონკრეტულ კრიტერიუმებს. შეგვიძლია ფაილის წაკითხვის ნიმუში სტრინგ მეთოდთთან გავაერთიანოთ
მარტივი ძებნის მექანიზმის გასაკეთებლად.
მაგალითად, თუ გვინდა, რომ წავიკითხოთ ფაილი და ამოვბეჭდოთ მხოლოდ ის ხაზები,
რომელიც იწყება პრეფიქსით “From:”,
ამისთვის უნდა გამოვიყენოთ სტრინგის მეთოდი
startswith - რომ მოვნიშნოთ მხოლოდ სასურველ პრეფიქსიანი ხაზები.
fhand = open('mbox-short.txt')
for line in fhand:
if
line.startswith('From:'):
print line
პროგრამის გაშვება მოგვცემს შემდეგ შედეგს:
From: stephen.marquard@uct.ac.za
From: louis@media.berkeley.edu
From: zqian@umich.edu
From: rjlowe@iupui.edu
...
შედეგი გამოიყურება შესანიშნავად, ვინაიდან ვხედავთ მხოლოდ იმ ხაზებს, რომელიც იწყება "From: - ით", მაგრამ
რატომ ვხედავთ დამატებით ცარიელ ხაზებს? ესაა "უხილავი" ახალი ხაზის სიმბოლოს
გამო. ყოველი ხაზი მთავრდება ამ სიმბოლოთი და print ბრძანება ცვლადში line ბეჭდავს
სტრინგს, რომელიც შეიცავს ახალ ხაზს და შემდეგ print ამატებს სხვა ახალ ხაზს, როგორც ვხედავთ შედეგია
ორმაგი ეფექტი.
ჩვენ შეგვეძლო გამოგვეყენებინა ხაზის დაჭრა რომ ყველაფერი ამოგვებეჭდა
but
the last character, მაგრამ უფრო მარტივია
გამოვიყენოთ rstrip მეთოდი რომელიც აცლის ჰარებს სტრინგს მარჯვენა მხრიდან:
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if
line.startswith('From:') :
print line
პროგრამის გაშვების შემდეგ მივიღებთ შემდეგ ამონაბეჭდს:
From: stephen.marquard@uct.ac.za
From: louis@media.berkeley.edu
From: zqian@umich.edu
From: rjlowe@iupui.edu
From: zqian@umich.edu
From: rjlowe@iupui.edu
From: cwen@iupui.edu
...
შენი პროგრამა რაც უფრო რთული გახდება , ალბათ მოგინდება ძებნის მარყუჟში
continue - ს გამოყენება.
ძებნის ძირითადი აზრი ისაა, რომ
ეძებ კონკრეტულ ხაზებს და სხვა ხაზებს ტოვებ. და როცა იპოვნი ხაზს, მაშინ ამ ხაზს რამეს
უკეთებ. შეგვიძლია დავწეროთ მარყუჟი "არასაინტერესო" ხაზების გამოტოვების
ნიმუშად:
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
# Skip 'uninteresting lines'
if not line.startswith('From:') :
continue
# Process our 'interesting' line
print line
ამ პროგრამის ამონაბეჭდი არის იგივე.
არასაინტერესო ხაზებია რომელიც არ იწყება “From: - ით". რომელზე გადასახტომადაც ვიყენებთ continue - ს და საინტერესო ხაზები (ე.ი. რომელიც იწყება “From: - ით".)
დამუშავდება.
შეგვიძლია გამოვიყენოთ find
სტრინგ მეთოდი ტექსტური რედაქტორის იმიტირებისათვის
, რომელიც პოულობს ხაზებს. ვინაიდან find ეძებს შემთხვევით სტრინგს
სხვა სტრინგში და აბრუნებს სტრინგის პოზიციას ან -1 - ს თუ სტრინგი ვერ იპოვნა. შეგვიძლია
დავწეროთ მარყუჟი, რომ ვნახოთ ხაზები, რომელიც შეიცავს სტრინგს “@uct.ac.za” (ეს მოდის სამხრეთ აფრიკის კეიპ თაუნის უნივერსიტეტიდან):
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if line.find('@uct.ac.za') == -1 :
continue
print line
რომელსაც ექნება ესეთი ამონაბეჭდი:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
X-Authentication-Warning: set sender to stephen.marquard@uct.ac.za
using -f
From: stephen.marquard@uct.ac.za
Author: stephen.marquard@uct.ac.za
From david.horwitz@uct.ac.za Fri Jan 4 07:02:32 2008
X-Authentication-Warning: set sender to david.horwitz@uct.ac.za using
-f
From: david.horwitz@uct.ac.za
Author: david.horwitz@uct.ac.za
...
7.6 მომხმარებელი ირჩევს ფაილის სახელს
ნამდვილად არ გვინდა, რომ
ყოველ ჯერზე
ჩვენი კოდი იყო დასარედაქტირებელი. ჩვენ გინდა, რომ დავამუშავოთ ახალი ფაილი. უფრო
სასარგებლო იქნებოდა პროგრამის გაშვებისას
მომხმარებლისთვის გვეკითხა
ფაილის სახელი, ამგვარად მათ შეეძლებათ გამოიყენონ ჩვენი პროგრამა სხვადასხვა ფაილებთან
პითონის კოდის შეცვლის გარეშე. ამის გაკეთება საკმაოდ მარტივია raw_input - ის გამოყენებით:
fname = raw_input('Enter the file name: ')
fhand = open(fname)
count = 0
for line in fhand:
if line.startswith('Subject:') :
count = count + 1
print 'There were', count, 'subject lines in', fname
წავიკითხეთ ფაილის სახელი და ჩავსვით ცვლადში fname და
შემდეგ გავხსენით. ახლა უკვე შეგვიძლია გავუშვათ პროგრამა სხვა და სხვა ფაილებზე.
python search6.py
Enter the file name: mbox.txt
There were 1797 subject lines in mbox.txt
python search6.py
Enter the file name: mbox-short.txt
There were 27 subject lines in mbox-short.txt
სანამ სხვა ნაწილზე გადახვალ, შეხედე ზემოთა პროგრამას და შენ თავს შეეკითხე
"რა შეცდომა შეიძლება იყოს მაგ პროგრამაში?" ან "რა შეიძლება მომხმარებელმა
გააკეთოს ისეთი, რაც გამოიწვევს პროგრამაში შეცდომას და მომხმარებელთან შეგვარცხვენს?
"
No comments:
Post a Comment