2016-10-26 4 views
1

"september 20 2010"という文字列をarrowを使用してオブジェクトに変換しようとしています。日付をPythonライブラリを操作する矢印日付を使用して文字列の形式で日付を解析する

私は、テキストの一部を交換する機能を書かれており、2016年9月20日になってしまったが、私はYYYY-MM-DDフォーマットをしたいし、私の文字列を認識して変換することarrowを得るように見えることはできませんしていますそれはPython datetime.dateオブジェクトに(時間なしで)。

何が効果があり、何が効果がないか。これは私のために動作しません

arrow.get('september 20 2010', '%B %d %Y')

私はエラーを取得する:ParserError: Failed to match '%B %(?P<d>[1-7]) %Y'文字列を解析"september 20 2010"

私は、文字列を操作して、arrow.Arrow(y,m,d).date()を使用する場合しかし、結果はdatetime.date(2016, 9, 20)オブジェクトです。

.format('dddd-DD-MMMM-YYYY')を使用して他の形式に変換することはできません。これは、月曜日の9月20日を返します。

+0

このdoesntの仕事 'arrow.get( '2010年9月20日'、 '%B%dの%Y')は'? – jezrael

答えて

0

arrowを使用すると、文字列の正確な構文に一致する必要があります。ここにはassociated tokenのリストがあります。

arrow.get('September 20 2010', 'MMMM D YYYY')

:それは、1つのまたは2つの数字1、2、3と番号を覆うため、この非常に場合には、一つだけDがある... 29、30DDカバーしながら2桁のみ01、02、03 ... 29、30

で数あなたの矢オブジェクトを取得したら、あなたはformat()を使っているようしかし、あなたがそれを表示することができます

ar = arrow.get('September 20 2010', 'MMMM D YYYY') 
print(ar.format('YYYY-MM-DD')) # 2010-09-20 

EDIT

あなたのコメントに答えるためには、arは、矢印オブジェクトであり、あなたがdatetime.dateオブジェクトを返すメソッドdate()を持っていることが

Arrowdirに含まれるすべてのメソッドを確認することができます。あなたがpandasを使用したい場合は

今、それは簡単です:

import array 
import pandas as pd 

ar = arrow.get('September 20 2010', 'MMMM D YYYY') 
df = pd.to_datetime(ar.date()) 
print(df) # 2010-09-20 00:00:00 
+0

ありがとう@Max arオブジェクトはunicode型ですパンダにこれを渡してパンダが日付として解釈する方法はありますか?私は関数内にこれを持っていて、pandasデータフレームの列に日付オブジェクトを戻したいと思っています。 – yoshiserry

+0

には、9桁と19桁の日付文字列の違いを説明するために何かできることがあります。これは2桁です(文字列がどのような形式になっているかを明示的に伝える必要があります)言及)。現時点では、「MMMM D YYYY」は、1つ以上のURLを試してみると壊れます。彼らはすべて2010年9月20日または2010年9月9日または8月4日などです。常に長い月名、(1-2)数字の日、および4桁の年です。 – yoshiserry

+0

私の答え[トークン関連](http://crsmithdev.com/arrow/#tokens)を参照すると、いくつかのユースケースがカバーされています。私はあなたが9または20をカバーするために何かを変更する必要はないと思うが、ドキュメントを見てください。それは非常に理解しやすいです! –

関連する問題