Python日期转换。如何将阿拉伯语日期字符串转换为日期或日期时间对象python

时间:2015-09-30 07:02:28

标签: python datetime multilingual arabic

我必须将此日期转换为普通日期字符串/对象。

1994-04-11至11-04-1994。

5 个答案:

答案 0 :(得分:1)

var arabicDate = "١٩٩٤-٠٤-١١";
var europeanDate = arabicDate.replace(/[\u0660-\u0669]/g, function(m) {
  return String.fromCharCode(m.charCodeAt(m) - 0x660 + 0x30);
}).split('-').reverse().join('-');
console.log(europeanDate);
// => 11-04-1994

编辑:Derp。 Python,而不是JavaScript。我会把它留在这里供有人重写。

答案 1 :(得分:1)

我已经解决了这个问题。可能不是最好的,但它的工作:)

# -*- coding: utf8 -*-
import unicodedata
s = u"١٩٩٤-٠٤-١١"

def date_conv(unicode_arabic_date):
    new_date = ''
    for d in unicode_arabic_date:
        if d != '-':
            new_date+=str(unicodedata.decimal(d))
        else:
            new_date+='-'
    return new_date

print date_conv(s)
  
    
      

1994年4月11日

    
  

答案 2 :(得分:1)

从阿拉伯语日期字符串创建日期对象:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import date

d = date(*map(int, u"١٩٩٤-٠٤-١١".split('-')))
# -> datetime.date(1994, 4, 11)

答案 3 :(得分:1)

这是我写的一个解决方法:

def arab_to_decimal(timestamp):
    if not isinstance(timestamp, unicode) return
    table = {1632: 48,  # 0
             1633: 49,  # 1
             1634: 50,  # 2
             1635: 51,  # 3
             1636: 52,  # 4
             1637: 53,  # 5
             1638: 54,  # 6
             1639: 55,  # 7
             1640: 56,  # 8
             1641: 57}  # 9
    return timestamp.translate(table)

arab_to_decimal(u"١٩٩٤-٠٤-١١")

答案 4 :(得分:0)

使用unicodedata.decimal绝对是一个好主意。使用locale模块和time.strptime / time.strftime可能有一个很好的方法,但我在这台机器上没有任何阿拉伯语语言环境,所以我不打算进行实验。 :)

FWIW,这里是将Amadan的JavaScript代码直接翻译成Python函数。

import re

pat = re.compile(u'[\u0660-\u0669]', re.UNICODE)

def arabic_to_euro_digits(m):
    return unichr(ord(m.group(0)) - 0x630)

def arabic_to_euro_date(arabic_date):
    s = pat.sub(arabic_to_euro_digits, arabic_date)
    return '-'.join(s.split('-')[::-1])

arabic_date = u'١٩٩٤-٠٤-١١'
print arabic_date

euro_date = arabic_to_euro_date(arabic_date)
print euro_date

<强>输出

١٩٩٤-٠٤-١١
11-04-1994