الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية انشاء جدول ؟

بدأه FunnyWolF في 28 أكتوبر 2008 · 25 رد · 5,707 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب

اتمنى الجميع بصحه وسلامه إن شاء الله

حبيت اسال عن طريقه لطباعة جدول على الشاشه باستخدام البايثون

علما ان نظام التشغيل عندي هو LINUX طبعا يكون عباره عن سكربت اقوم بتشغيله

والف شكر مقدما

#2

هذه محاوله مني لقراءة نص من ملف txt ولكنها فاشله

فالرجاء مساعدتي :D

#!/usr/bin/python
import string
DEFRECSEP = '================================='
DEFFIELDSEP = '\n'
DEFKEYSEP = ':'
def loadfile( portofolio,
		recordsep = DEFRECSEP,
		fieldsep= DEFFIELDSEP,
		keysep=DEFKEYSEP
	):
	f = open('/home/portofolio.txt').read()
	for line in f:
	print ( line, end='')
	return f
#3

يعنى ايه طباعة جدول ؟

هل تقصد جملة select على جدول ؟

ولا spreadsheet ? ولا ايه ؟

بالنسبة لطباعة محتوى ملف التكست

content=f.read()
 print content

او

txt=f.readlines()
 for line in txt:
 print line

طبعا ال f دى file object اتفتح سواء ب open او file

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 28 أكتوبر 2008 في 18:13

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#4

اولا شكرا لردك اخي

ثانيا انا اريد طباعة محتوى ملف txt وليس spreatsheet او قاعدة بيانات

فقط محتويات ملف txt موجود في داخله جدول بسيط

ولكن انا جربت الكود التالي واعطاني غلط عند f اللي هو

IndenttationError : unexpected indent

وانا جديد على لغة الpython فهل تستطيع اخباري اين الغلط في الكود التالي

#!/usr/bin/python
	f = open('/home/portofolio.txt')
	txt = f.readlines()
	for line in txt
	print line

تم تعديل هذه المشاركة بواسطة FunnyWolF في 29 أكتوبر 2008 في 03:44

#5

FunnyWolf:

ال for loop لازم تاخد بعدها ازاحة كالتالى مثلا

#!/usr/bin/python
f = open('/home/portofolio.txt')
txt = f.readlines()
  for line in txt
print line

ومش تنسى f.close()

وتحت امرك..

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 29 أكتوبر 2008 في 03:58

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#6

الفور لازم بعدها نقطتين شارحة :

و الازاحة بعد الفور مش قبلها!

  1. #!/usr/bin/python
  2. f = open('/home/portofolio.txt')
  3. txt = f.readlines()
  4. for line in txt:
  5. print line
  6.  
  7.  
  8.  

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 29 أكتوبر 2008 في 04:16

#7

سورى ياجماعة كنت بعمل الإديت فخدت السطر اللى قبله مش اللى بعده

شكرا ياحسن

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#8

الف شكر ياجماعه عالتجاوب , لكن لسا يعطيني نفس الغلط عند تعريف المتغير f ويعطيني الرساله التاليه

IndenttationError : unexpected indent

شو الحل ممكن ؟

#9

السلام عليكم و رحمة الله

أخي جربت الكود عندي و يعمل بدون مشاكل.

تقول أن IndenttationError عند المتغير f ؟ إذا كنت تعمل على نفس المحاولة الأولى لك (في ردك الثاني) فيجب عليك إزالة الإزاحة من الأسطر القبل الأخير و قبل قبل الأخير.

عامة جملة f.readline ليس قبلها أي إزاحة

و جملة for ليس قبلها أي إزاحة

بالمناسبة كيف تريد قراءة جدول داخل ملف txt ؟!, لا توجد جداول داخل ملفات التكست !

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#10
محمد سمير كتب:
السلام عليكم و رحمة الله

أخي جربت الكود عندي و يعمل بدون مشاكل.

تقول أن IndenttationError عند المتغير f ؟ إذا كنت تعمل على نفس المحاولة الأولى لك (في ردك الثاني) فيجب عليك إزالة الإزاحة من الأسطر القبل الأخير و قبل قبل الأخير.

عامة جملة f.readline ليس قبلها أي إزاحة

و جملة for ليس قبلها أي إزاحة

بالمناسبة كيف تريد قراءة جدول داخل ملف txt ؟!, لا توجد جداول داخل ملفات التكست !

الف شكر لك اخي على مساعدتك ولا يهونون الاخوان كلهم, الان اشتغل تمام

كان المشكله من محرر النصوص يسوي فراغات في كل السطور

نعم اخي اريد قراءة الجدول التالي

name	model   quantity		price

BMW	 325	 3	   62135.00
BMW	 318	 2	   49880.00
BMW	 330	 5	   67500.00
BMW	 745	 1	   102399.00
MERC	180	 4	   49990.00
MERC	220	 2	   53750.00
MERC	240	 3	   32000.00
LEXUS   IS200   1	   64000.00
LEXUS   I250	3	   67870.00
LEXUS   ES340   2	   23000.00

وهو محفوظ في ملف txt لكن الان قدرت اقراه

لكن ابي اسوي عمليات حسابية على بعض البيانات الموجوده في الجدول

ابي اضرب الكميه في سعر كل سياره وبعدين اجمع الناتج لكل السيارات

فهل احد عنده خلفيه عن كيفية عمل شي مماثل ؟

#11

قراءة المحتوى

>>> text=file("tst").read()

عرضه

>>> for line in text.split("\n")[2:]:
	if line:
		name, model, q, price=line.split()
		print "%s, %s, %s, %s"%(name, model, q, price)

الناتج

اقتباس
BMW, 325, 3, 62135.00

BMW, 318, 2, 49880.00

BMW, 330, 5, 67500.00

BMW, 745, 1, 102399.00

MERC, 180, 4, 49990.00

MERC, 220, 2, 53750.00

MERC, 240, 3, 32000.00

LEXUS, IS200, 1, 64000.00

LEXUS, I250, 3, 67870.00

LEXUS, ES340, 2, 23000.00

>>>

تطبيق على readlines

>>> lines=file("tst").readlines()
>>> for line in lines:
	print line




name	model   quantity		price



BMW	 325	 3	   62135.00

BMW	 318	 2	   49880.00

BMW	 330	 5	   67500.00

BMW	 745	 1	   102399.00

MERC	180	 4	   49990.00

MERC	220	 2	   53750.00

MERC	240	 3	   32000.00

LEXUS   IS200   1	   64000.00

LEXUS   I250	3	   67870.00

LEXUS   ES340   2	   23000.00

edit:

وخد بصة على ال csv module فى بايثون

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 29 أكتوبر 2008 في 13:34

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#12

في الاول بدك تفصلهم عن بعض باستخدام split و لكن هناك سؤال .. هل العناصر مفصولة عن بعض بواسطة مسافات space ام بواسطة tabs؟

اذا كان بواسطة tab فاستخدم

line.split('\t')

اما اذا كانت مفصولة بواسطة مسافات spaces فاعمل split بدون بارامترات, عادي,

بعدين اذا اردت القيام بعمليات حسابية يجب ان تحول بعض الاشياء الى int او float

  1.  
  2. name, model, q, price=line.split()
  3. q = int(q)
  4. price = float(price)
  5.  

#13
hasan_aljudy كتب:
في الاول بدك تفصلهم عن بعض باستخدام split و لكن هناك سؤال .. هل العناصر مفصولة عن بعض بواسطة مسافات space ام بواسطة tabs؟

اذا كان بواسطة tab فاستخدم

line.split('\t')

اما اذا كانت مفصولة بواسطة مسافات spaces فاعمل split بدون بارامترات, عادي,

بعدين اذا اردت القيام بعمليات حسابية يجب ان تحول بعض الاشياء الى int او float

  name, model, q, price=line.[color= black;]split[color= black;]([color= black;]) q = [color= #008000;]int[color= black;](q[color= black;]) price = [color= #008000;]float[color= black;](price[color= black;])

تقدر تستخدم .strip() كالتالى

 

[color= #66cc66;]>>> [color= #ff7700;font-weight:bold;]for line [color= #ff7700;font-weight:bold;]in txt.[color= black;]split[color= black;]([color= #483d8b;]"[color= #000099; font-weight: bold;]n"[color= black;])[color= black;][[color= #ff4500;]2:[color= black;]]:

    [color= #ff7700;font-weight:bold;]if line:

        name, model, q, p=[color= black;][col.[color= black;]strip[color= black;]([color= black;]) [color= #ff7700;font-weight:bold;]for col [color= #ff7700;font-weight:bold;]in line.[color= black;]split[color= black;]([color= black;])[color= black;]]

        [color= #ff7700;font-weight:bold;]print [color= #483d8b;]"%s %s %s %s"[color= #66cc66;]%[color= black;](name, model, q, p[color= black;])
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#14

في الحقيقة جربت split على الكونسول و يبدو انه ما في داعي لاخذ اي حيطة من tab لانه split يعمل على اي مسافة سواءا كانت space او tab و كمان ما في داعي للـ strip لانها حتطلع مظبطة لحالها ..

  1.  
  2. >>> a = "hi there world t dltad"
  3. >>> a.split()
  4. ['hi', 'there', 'world', 'dl', 'ad']
  5.  

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 30 أكتوبر 2008 في 00:46

#15

السلام عليكــم ورحمـة الله وبركاتــة

الف شكر اخواني على المساعده,ولكن مثل ما اخبرتكم انني جديد على الPython وليست عندي الا بعض الأساسيات وانا احاول تطويرها

ولكن انا عملت التالي

file = open('portofolio.txt')
txt = file.readlines()
for line in txt:
 print line

name, model, q, price=line.split("\t")
q = int(q)
price = float(price)

فماهو التعديل اللازم على الكود حتى يقوم بالعمليه الحسابيه التالي

int sum, q, p;
for (i=1,i<13,i++) /* or i= how many lines */
   sum = sum + (q*p);

print sum;
#16

اعتقد هذا التعديل يجب ان يفي بالغرض .. فقط تذكر المحافظة على الـ indentation في الكود ..

  1. sum = 0
  2. file = open('portofolio.txt')
  3. txt = file.readlines()
  4. for line in txt:
  5. name, model, q, price=line.split()
  6. q = int(q)
  7. price = float(price)
  8. sum += q * price
  9.  
  10. print "Sum is:", sum 
  11.  

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 30 أكتوبر 2008 في 10:26

#17

السلام عليكــم ورحمـة الله وبركاتــه

إضافة بسيطة لكي تحصل على مجموع أسعار كل موديل بجانب الموديل نفسه:

  1.  
  2.  
  3. sum = 0
  4. file = open('portofolio.txt')
  5. txt = file.readlines()
  6. for line in txt:
  7. name, model, q, price=line.split()
  8. q = int(q)
  9. price = float(price)
  10. totalPrice = q*price
  11. print "%s, %s, %s, %s, %s"%(name, model, q, price, totalPrice)
  12. sum += q * price
  13.  
  14. print "Sum is:", sum
  15.  
  16.  

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#18
hasan_aljudy كتب:
اعتقد هذا التعديل يجب ان يفي بالغرض .. فقط تذكر المحافظة على الـ indentation في الكود ..

  1. sum = 0 file = open('portofolio.txt') txt = file.readlines() for line in txt: name, model, q, p
    rice=line.split() q = int(q) price = float(price) sum += q * price print "Sum is:", sum
  2.  

انا جربت الكود السابق وطلعلي الخطأ التالي:

Traceback (most recent call last):
  File "a.py", line 7, in <module>
	q = int(q)
ValueError: invalid literal for int() with base 10: 'quantity'

اتوقع المشكله مع مع المتغير q فايش رايكم يا شباب ؟

#19

ذلك لأن أول سطر في ملف التكست ثالث كلمة quantity عبارة عن سترنج و انت عرفتها على إنها int و كنت حتقابل نفس المشكلة مع المتغير الثاني لنفس السبب .

الحل السريع أزل الهيدر (أول سطر) من ملف التكسك و أضفه كجملة print قبل جملة for في ملف البايثون.

print "name \t model \t quantity \t price \n"

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#20

طيب اخي الكريم , هل في طريقه مثلا اخليه يبدأ قراءه من السطر الثاني؟

لأني احتاج السطر الاول ولا استطيع ازالته

#22
hasan_aljudy كتب:
تقدر تضيف سطر file.readline() قبل الفور لوب ..

اخي ممكن توضح لي شوي, انا زي ما قلت لك لسا جديد على الpython يعني كيف اضيف سطر ؟ وكيف ينكتب الكود في الكود التالي

sum = 0
file = open('portofolio.txt')
txt = file.readlines()
for line in txt:
 name, model, q, price=line.split()
 q = int(q)
 price = float(price)
 sum += q * price
 print "sum is:", sum

واش راح يسوي الامر اللي انت قلتلي عليه؟

انا ابي دالة الجمع تبدأ من السطر الثاني بحيث تتجاهل النص

#23

تضيف سطر يعني تكتبه قبل سطر الفور لوب :wink: في الكود اللي اعطيتك اياه ..

لما تعمل readline راح يتحرك المؤشر, بحيث لما يوصل على readlines() في الفور لوب راح يبدأ القرائة من السطر الثاني لان السطر الاول مقروء سابقا ..

#24

السلام عليكم و رحمة الله

ايضاح سريع للفرق بين readlines و readline أن الأولى تقرأ الملف كاملاً ثم تضع كل سطر في list item منفصل أما الثانية فتقرأ سطر واحد فقط كل مرة و تفيدك إذا كان الملف كبير *مثل ملفات اللوج* و تخشى الا تكفي الذاكرة للمعلاجة.

من الاكواد التي ذكرها الإخوة يكون ما تريد كالتالي:

w

  1.  
  2. sum = 0
  3. file = open('portofolio.txt', 'r')
  4. firstline = file.readline()
  5. print firstline
  6. txt = file.readlines()
  7. for line in txt:
  8. name, model, q, price=line.split()
  9. q = int(q)
  10. price = float(price)
  11. totalPrice = q*price
  12. print "%st %st %st %st %s"%(name, model, q, price, totalPrice)
  13. sum += q * price
  14. print ""
  15. print "Sum is:", sum
  16. file.close()
  17.  

w

تم تعديل هذه المشاركة بواسطة محمد سمير في 31 أكتوبر 2008 في 07:28

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#25
محمد سمير كتب:
السلام عليكم و رحمة الله

ايضاح سريع للفرق بين readlines و readline أن الأولى تقرأ الملف كاملاً ثم تضع كل سطر في list item منفصل أما الثانية فتقرأ سطر واحد فقط كل مرة و تفيدك إذا كان الملف كبير *مثل ملفات اللوج* و تخشى الا تكفي الذاكرة للمعلاجة.

من الاكواد التي ذكرها الإخوة يكون ما تريد كالتالي:

w

  1. sum = 0 file = open('portofolio.txt', 'r') firstline = file.readline() print firstline txt =
    file.readlines() for line in txt: name, model, q, price=line.split() q = int(q) price = float(p
    rice) totalPrice = q*price print "%st %st %st %st %s"%(name, model, q, price, totalPrice) sum +
    = q * price print "" print "Sum is:", sum file.close()
  2.  
  3.  

w

ياهوووووووووووووووووووووووووووو :lol:

يسلمو اخي العزيز محمد ولا يهونون الاخوان الباقين

اشتغل البرنامج ميه ميه

تم تعديل هذه المشاركة بواسطة FunnyWolF في 31 أكتوبر 2008 في 09:21

مواضيع مشابهة