اذهب إلى المحتوى

السؤال

نشر

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

عندي ملف اكسل وليكن 'C:/data/dtset.xlsx' به عمود column 1 يحتوي على جمل بداخلها أرقام

على سبيل المثال لاحد الخلايا " جملة نصية 12345 جملة نصية 56213 جملة نصية 98756 جملة نصية "

أريد استخراج أول 5 أرقام (12345) في عمود جديد، ثاني خمس أرقام (56213) في عمود جديد، ثالث خمس أرقام (98756) في عمود جديد

حفظ التعديلات في ملف جديد وليكن 'C:/data/new.xlsx'

Recommended Posts

  • 0
نشر

يمكنك استخدام مكتبة `pandas` في Python لمعالجة ملفات Excel واستخراج البيانات المطلوبة. هنا هو مثال لكيفية القيام بذلك:

import pandas as pd

# قراءة ملف Excel
df = pd.read_excel('C:/data/dtset.xlsx')

# استخراج الأرقام من العمود الأول
df['أول خمسة'] = df['column 1'].str.extract(r'(\d{5})', expand=False)
df['ثاني خمسة'] = df['column 1'].str.extract(r'\d{5}(\d{5})', expand=False)
df['ثالث خمسة'] = df['column 1'].str.extract(r'\d{10}(\d{5})', expand=False)

# حفظ التعديلات في ملف Excel جديد
df.to_excel('C:/data/new.xlsx', index=False)

في هذا المثال، نستخدم `read_excel` لقراءة الملف 'C:/data/dtset.xlsx' ونخزنه في DataFrame يسمى `df`. ثم نستخدم `str.extract` لاستخراج الأرقام من العمود الأول باستخدام تعبيرات منتظمة. تم إنشاء ثلاثة أعمدة جديدة في DataFrame (`أول خمسة`، `ثاني خمسة`، و`ثالث خمسة`) وتم ملؤها بالأرقام المستخرجة.

أخيرًا، يتم استخدام `to_excel` لحفظ التعديلات في ملف Excel جديد 'C:/data/new.xlsx' بدون تضمين الفهرس.

  • 0
نشر

تستطيع ذلك من خلال الإعتماد على مكتبة مثل openpyxl وإليك مثال:

import openpyxl

# افتح ملف Excel
wb = openpyxl.load_workbook("C:/data/dtset.xlsx")

# احصل على ورقة العمل الأولى
ws = wb.active

# احصل على العمود الأول
col1 = ws["A"]

# استخراج أول 5 أرقام من كل خلية
for cell in col1:
    # تأكد من أن الخلية تحتوي على أرقام فقط
    if cell.value.isnumeric():
        # استخراج أول 5 أرقام
        first_five = cell.value[:5]
        # اطبع النتيجة
        print(first_five)

# احفظ التغييرات في ملف جديد
wb.save("C:/data/new.xlsx")

والكود يعمل على إنشاء ملف Excel جديد يحتوي على ثلاثة أعمدة جديدة:

  • العمود الأول: يحتوي على أول 5 أرقام من كل خلية في العمود الأول من الملف الأصلي.
  • العمود الثاني: يحتوي على الأرقام من 5 إلى 10 من كل خلية في العمود الأول من الملف الأصلي.
  • العمود الثالث: يحتوي على آخر 5 أرقام من كل خلية في العمود الأول من الملف الأصلي.

وإليك شرح الكود:

  • import openpyxl: يعمل على استيراد مكتبة openpyxl، والتي ستستخدمها لفتح ومعالجة ملف Excel.
  • wb = openpyxl.load_workbook("C:/data/dtset.xlsx"): فتح ملف Excel الموجود في المسار المحدد.
  • ws = wb.active: الحصول على ورقة العمل النشطة في الملف المفتوح.
  • col1 = ws["A"]: الحصول على العمود الأول في ورقة العمل النشطة.
  • for cell in col1: إنشاء حلقة for تتكرر على كل خلية في العمود الأول.
  • if cell.value.isnumeric():: عبارة الشرطية للتحقق مما إذا كانت الخلية تحتوي على أرقام فقط.
  • first_five = cell.value[:5]: استخراج أول 5 أرقام من الخلية.
  • print(first_five): طباعة النتيجة.
  • wb.save("C:/data/new.xlsx"): حفظ التغييرات في ملف جديد.
  • 0
نشر
بتاريخ 4 ساعة قال عبدالباسط ابراهيم:

يمكنك استخدام مكتبة `pandas` في Python لمعالجة ملفات Excel واستخراج البيانات المطلوبة. هنا هو مثال لكيفية القيام بذلك:

import pandas as pd

# قراءة ملف Excel
df = pd.read_excel('C:/data/dtset.xlsx')

# استخراج الأرقام من العمود الأول
df['أول خمسة'] = df['column 1'].str.extract(r'(\d{5})', expand=False)
df['ثاني خمسة'] = df['column 1'].str.extract(r'\d{5}(\d{5})', expand=False)
df['ثالث خمسة'] = df['column 1'].str.extract(r'\d{10}(\d{5})', expand=False)

# حفظ التعديلات في ملف Excel جديد
df.to_excel('C:/data/new.xlsx', index=False)

في هذا المثال، نستخدم `read_excel` لقراءة الملف 'C:/data/dtset.xlsx' ونخزنه في DataFrame يسمى `df`. ثم نستخدم `str.extract` لاستخراج الأرقام من العمود الأول باستخدام تعبيرات منتظمة. تم إنشاء ثلاثة أعمدة جديدة في DataFrame (`أول خمسة`، `ثاني خمسة`، و`ثالث خمسة`) وتم ملؤها بالأرقام المستخرجة.

أخيرًا، يتم استخدام `to_excel` لحفظ التعديلات في ملف Excel جديد 'C:/data/new.xlsx' بدون تضمين الفهرس.

تحياتي لك
هذا الكود يعمل فعلا على استخراج أول 5 أرقام فقط ثم يعد 5 حروف ويستخرج الأرقام ثم يعد 10 حروف ويستخرج الأرقان وهكذا

ولكن بعد محاولات كثيرة وجدت الكود الصحيح الذي يعمل بغض النظر عن عدد الكلمات بين كل مجموعة من الأرقام

import pandas as pd
import re

# Open the Excel file
excel_file = 'F:/data_set_extract_digits.xlsx'
df = pd.read_excel(excel_file, sheet_name='sheet1')

# Extract consecutive groups of 5 digits in new columns
df['First Five Digits'] = df['column1'].apply(lambda x: re.findall(r'\d{5}', str(x))[0] if re.findall(r'\d{5}', str(x)) else '')
df['Second Five Digits'] = df['column1'].apply(lambda x: re.findall(r'\d{5}', str(x))[1] if len(re.findall(r'\d{5}', str(x))) > 1 else '')
df['Third Five Digits'] = df['column1'].apply(lambda x: re.findall(r'\d{5}', str(x))[2] if len(re.findall(r'\d{5}', str(x))) > 2 else '')

# Save the extracted data as a new Excel file
output_file = 'F:/result.xlsx'
df.to_excel(output_file, index=False)

print("Extracted data saved successfully!")

 

 

مرفق ملف للتجربة

data_set_extract_digits.xlsx

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...