السلام عليكم شباب
اتمنى الجميع بصحه وسلامه إن شاء الله
حبيت اسال عن طريقه لطباعة جدول على الشاشه باستخدام البايثون
علما ان نظام التشغيل عندي هو LINUX طبعا يكون عباره عن سكربت اقوم بتشغيله
والف شكر مقدما
السلام عليكم شباب
اتمنى الجميع بصحه وسلامه إن شاء الله
حبيت اسال عن طريقه لطباعة جدول على الشاشه باستخدام البايثون
علما ان نظام التشغيل عندي هو LINUX طبعا يكون عباره عن سكربت اقوم بتشغيله
والف شكر مقدما
هذه محاوله مني لقراءة نص من ملف 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يعنى ايه طباعة جدول ؟
هل تقصد جملة 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
اولا شكرا لردك اخي
ثانيا انا اريد طباعة محتوى ملف 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
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
الفور لازم بعدها نقطتين شارحة :
و الازاحة بعد الفور مش قبلها!
تم تعديل هذه المشاركة بواسطة hasan_aljudy في 29 أكتوبر 2008 في 04:16
سورى ياجماعة كنت بعمل الإديت فخدت السطر اللى قبله مش اللى بعده
شكرا ياحسن
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
الف شكر ياجماعه عالتجاوب , لكن لسا يعطيني نفس الغلط عند تعريف المتغير f ويعطيني الرساله التاليه
IndenttationError : unexpected indent
شو الحل ممكن ؟
السلام عليكم و رحمة الله
أخي جربت الكود عندي و يعمل بدون مشاكل.
تقول أن IndenttationError عند المتغير f ؟ إذا كنت تعمل على نفس المحاولة الأولى لك (في ردك الثاني) فيجب عليك إزالة الإزاحة من الأسطر القبل الأخير و قبل قبل الأخير.
عامة جملة f.readline ليس قبلها أي إزاحة
و جملة for ليس قبلها أي إزاحة
بالمناسبة كيف تريد قراءة جدول داخل ملف txt ؟!, لا توجد جداول داخل ملفات التكست !
سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك
محمد سمير كتب:السلام عليكم و رحمة اللهأخي جربت الكود عندي و يعمل بدون مشاكل.
تقول أن 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 لكن الان قدرت اقراه
لكن ابي اسوي عمليات حسابية على بعض البيانات الموجوده في الجدول
ابي اضرب الكميه في سعر كل سياره وبعدين اجمع الناتج لكل السيارات
فهل احد عنده خلفيه عن كيفية عمل شي مماثل ؟
قراءة المحتوى
>>> 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.00BMW, 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.00edit:
وخد بصة على ال csv module فى بايثون
تم تعديل هذه المشاركة بواسطة ahmed_youssef في 29 أكتوبر 2008 في 13:34
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
في الاول بدك تفصلهم عن بعض باستخدام split و لكن هناك سؤال .. هل العناصر مفصولة عن بعض بواسطة مسافات space ام بواسطة tabs؟
اذا كان بواسطة tab فاستخدم
line.split('\t')اما اذا كانت مفصولة بواسطة مسافات spaces فاعمل split بدون بارامترات, عادي,
بعدين اذا اردت القيام بعمليات حسابية يجب ان تحول بعض الاشياء الى int او float
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
في الحقيقة جربت split على الكونسول و يبدو انه ما في داعي لاخذ اي حيطة من tab لانه split يعمل على اي مسافة سواءا كانت space او tab و كمان ما في داعي للـ strip لانها حتطلع مظبطة لحالها ..
تم تعديل هذه المشاركة بواسطة hasan_aljudy في 30 أكتوبر 2008 في 00:46
السلام عليكــم ورحمـة الله وبركاتــة
الف شكر اخواني على المساعده,ولكن مثل ما اخبرتكم انني جديد على ال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;
اعتقد هذا التعديل يجب ان يفي بالغرض .. فقط تذكر المحافظة على الـ indentation في الكود ..
تم تعديل هذه المشاركة بواسطة hasan_aljudy في 30 أكتوبر 2008 في 10:26
السلام عليكــم ورحمـة الله وبركاتــه
إضافة بسيطة لكي تحصل على مجموع أسعار كل موديل بجانب الموديل نفسه:
سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك
hasan_aljudy كتب:اعتقد هذا التعديل يجب ان يفي بالغرض .. فقط تذكر المحافظة على الـ indentation في الكود ..
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
انا جربت الكود السابق وطلعلي الخطأ التالي:
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 فايش رايكم يا شباب ؟
ذلك لأن أول سطر في ملف التكست ثالث كلمة quantity عبارة عن سترنج و انت عرفتها على إنها int و كنت حتقابل نفس المشكلة مع المتغير الثاني لنفس السبب .
الحل السريع أزل الهيدر (أول سطر) من ملف التكسك و أضفه كجملة print قبل جملة for في ملف البايثون.
print "name \t model \t quantity \t price \n"
سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك
طيب اخي الكريم , هل في طريقه مثلا اخليه يبدأ قراءه من السطر الثاني؟
لأني احتاج السطر الاول ولا استطيع ازالته
تقدر تضيف سطر file.readline() قبل الفور لوب ..
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واش راح يسوي الامر اللي انت قلتلي عليه؟
انا ابي دالة الجمع تبدأ من السطر الثاني بحيث تتجاهل النص
تضيف سطر يعني تكتبه قبل سطر الفور لوب :wink: في الكود اللي اعطيتك اياه ..
لما تعمل readline راح يتحرك المؤشر, بحيث لما يوصل على readlines() في الفور لوب راح يبدأ القرائة من السطر الثاني لان السطر الاول مقروء سابقا ..
السلام عليكم و رحمة الله
ايضاح سريع للفرق بين readlines و readline أن الأولى تقرأ الملف كاملاً ثم تضع كل سطر في list item منفصل أما الثانية فتقرأ سطر واحد فقط كل مرة و تفيدك إذا كان الملف كبير *مثل ملفات اللوج* و تخشى الا تكفي الذاكرة للمعلاجة.
من الاكواد التي ذكرها الإخوة يكون ما تريد كالتالي:
w
تم تعديل هذه المشاركة بواسطة محمد سمير في 31 أكتوبر 2008 في 07:28
سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك
محمد سمير كتب:السلام عليكم و رحمة اللهايضاح سريع للفرق بين readlines و readline أن الأولى تقرأ الملف كاملاً ثم تضع كل سطر في list item منفصل أما الثانية فتقرأ سطر واحد فقط كل مرة و تفيدك إذا كان الملف كبير *مثل ملفات اللوج* و تخشى الا تكفي الذاكرة للمعلاجة.
من الاكواد التي ذكرها الإخوة يكون ما تريد كالتالي:
w
w
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()
ياهوووووووووووووووووووووووووووو :lol:
يسلمو اخي العزيز محمد ولا يهونون الاخوان الباقين
اشتغل البرنامج ميه ميه
تم تعديل هذه المشاركة بواسطة FunnyWolF في 31 أكتوبر 2008 في 09:21