تخلص من الأصفار الرائدة لسلاسل التاريخ في بيثون؟ [مكرر
-
22-09-2019 - |
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
هل هناك طريقة ذكية للتخلص من الأصفار الرائدة لسلاسل التاريخ في بيثون؟
في المثال أدناه ، أود الحصول على 12/1/2009 في المقابل بدلاً من 12/01/2009. أعتقد أنه يمكنني استخدام التعبيرات العادية. لكن بالنسبة لي يبدو أن المبالغة. هل هناك حل أفضل؟
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
أنظر أيضا
المحلول
OP ، لا يتطلب الأمر الكثير من معالجة السلسلة.
>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'
نصائح أخرى
حل أبسط وقابل للقراءة هو تنسيقه بنفسك:
>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
أود أن أقترح تعبيرًا منتظمًا بسيطًا جدًا. ليس مثل هذا هو الأداء الحرجة ، أليس كذلك؟
البحث عن \b0
واستبدل لا شيء.
بمعنى آخر.:
import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'
ومع ذلك ، أظن أن هذا يعتمد على النظام strftime()
التنفيذ وقد لا يكون محمولًا تمامًا لجميع المنصات ، إذا كان ذلك مهمًا لك.
لا تنتمي إلى StackOverflow