ホーム>source

Y-M-D日付文字列の「日」の部分をとる関数を作成しようとしています。 例えば: 入力:["2022年11月23日2022年4月9日"] 出力:23

.split()関数を使用して文字列をコンマで分割し、最後の2つのインデックスをスライスしてその日を取得することで、これを試みました。ただし、新しい分割文字列の最後の項は簡単に取得できますが、2番目から最後の項は取得できません。

例:

<前>ウィズウィズ

ただし、sliceコマンドに2番目の引数を追加すると、壊れます。

<前>ウィズウィズ

私はpythonとプログラミング一般を学ぶのが初めてなので、上記の用語の一部が正しくない可能性があること、および上記のコードは非常に 乱雑ですが、上記のスライスコマンドが機能しない理由を知るための助けが必要です。私はコード自体の改善に関する提案を受け入れていますが、スライスが彼の状況で機能しない理由を本当に知りたいだけです。

ありがとう!

y_m_d="2022 November 20,2023 April 9" split_ymd=y_m_d.split(",") first_value=split_ymd[0] print(split_ymd[-1]) #This prints "0"
あなたの答え
  • 解決した方法 # 1

    スライスはどのような状況でも機能しないため、この状況ではスライスは機能しません。 .split() とは無関係です  またはあなたがやっている何か他のもの。

    このより単純なテストケースを考えてみましょう。

    <前>ウィズウィズ

    これは、 >>> [1,2,3,4][-1] 4 >>> [1,2,3,4][-1:-2] []  インデックス3を参照し、-2はインデックス2を参照し、スパン -1  後方にあるため、空として扱われます。

    実際に範囲が必要な場合は、それらを交換できます。

    <前>ウィズウィズ

    または、 [3,2) を使用することもできます  最後から2番目の要素が必要な場合:

    <前>ウィズウィズ

  • 解決した方法 # 2

    最初のリストをコンマで分割して、次を含むリストを作成できます。 それぞれが日付を表す複数の文字列。

    次に、それらの日付を繰り返し、それらをスペースで分割します。次のリストの最後の値は、探している日の値です。

    これが不明な場合はお知らせください。

    次のようになります。

    <前>ウィズウィズ

  • 解決した方法 # 3

    だから、私はここに2つの推奨事項があります:

    Pythonスライシングのしくみ(負の数と正の数の両方)を学習してみてください

    実際の解決策として、日付のリストを表示します。カンマで区切ってから日付を日付時刻オブジェクトに解析すると、ここでの作業が簡単になる場合があります。

    <前>ウィズウィズ

    日時オブジェクトの文字列形式を制御する方法の詳細については、https://docs.python.org/3/library/datetime.htmlを参照してください。

  • 解決した方法 # 4

    これにはいくつかの方法で対処できます。

    len関数を使用する:

    日付= "2013年11月20日、2023年4月10日"

    splitted = date.split( '、')

    splitted [0] [len(splitted [0])-2:]

    負のインデックスを使用します。

    日付= "2013年11月20日、2023年4月10日"

    splitted = date.split( '、')

    分割[0] [-2:]

  • 解決した方法 # 5

    素晴らしい >>> [1,2,3,4][-2:-1] [3]  モジュール!

    最初のレッスン:ビルトインにハードワークを任せましょう!

    次に、日付文字列を解析して日を返す関数の例を示します。さらに、関数の使用方法の実装例を以下に示します。

    お役に立てれば!

    関数: <前>ウィズウィズ 実装: <前>ウィズウィズ 出力: <前>ウィズウィズ -2

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ excel - Pythonを使用してcsvファイルをxlsxワークブックにコピーする