ちくのう症(蓄膿症)は「菌」が原因!?

TwitterのAPIからの日付を処理しようとしたのですが、
下記のコードではAttributeErrorの例外が発生します。
そもそも日付ライブラリを使うにはあっちこっちのサイトを見てみたのですが、
[from datetime import datetime]と[import datetime]という二つの書き方があるようですあが、
前者と後者ではある構文が例外になったりならなかったりするのですが、
この二つの宣言の区別が全然解りません。


from datetime import datetime

tweet = 'Fri Mar 23 05:26:17 +0000 2018'

dt = datetime.strptime(tweet, '%a %b %d %H:%M:%S %z %Y')
Time_JMT = dt + datetime.timedelta(hours=9)
print(Time_JMT)

dt = dt.astimezone()
dst = datetime.strftime(dt, '%Y/%m/%d %H:%M:%S')

print(dst, type(dst))

A 回答 (3件)

ライブラリのdatetime.pyを見て頂ければお分かりになりますが


以下の様な構造になっています。

datetime --レベル1 モジュール名
  datetime --レベル2 クラス定義
    strptime --レベル3 クラスメソッド定義
    strftime --同上
  timedelta --レベル2 クラス定義

パターンAでは、datetimeモジュールを読み込んでいるので、使用する時にはレベル1から記述する必要があります。
パターンBでは、datetimeモジュール内のdatetimeクラスとtimedeltaクラスを読み込んでいるので、使用する場合にはレベル2からの記述になります。

-----パターンA
import datetime

tweet = 'Fri Mar 23 05:26:17 +0000 2018'
dt = datetime.datetime.strptime(tweet, '%a %b %d %H:%M:%S %z %Y')
Time_JMT = dt + datetime.timedelta(hours=9)
print(Time_JMT)
dt = dt.astimezone()
dst = datetime.datetime.strftime(dt, '%Y/%m/%d %H:%M:%S')
print(dst, type(dst))


----パターンB
from datetime import datetime
from datetime import timedelta

tweet = 'Fri Mar 23 05:26:17 +0000 2018'
dt = datetime.strptime(tweet, '%a %b %d %H:%M:%S %z %Y')
Time_JMT = dt + timedelta(hours=9)
print(Time_JMT)
dt = dt.astimezone()
dst = datetime.strftime(dt, '%Y/%m/%d %H:%M:%S')
print(dst, type(dst))
----
    • good
    • 1
この回答へのお礼

大変ありがとうございました。違いもよくわかりコードの修正もいただき助かります。

お礼日時:2018/11/29 07:15

from datetime import datetime


これはdatetimeモジュールのdatetimeクラスを
datetimeという名称で使えるようにする。

import datetime

これはdatetimeモジュールをdatetimeという名前で参照できるようにする。

つまり、datetimeという名称か指すものが違う。
    • good
    • 0

[import datetime]これはdatetimeというモジュール全体を呼び込む


[from datetime import datetime]これはdatetimeの中にあるdatetimeだけを呼び出す

datetimeについては以下をよく読むと良いです
https://docs.python.jp/3.6/library/datetime.html …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q戻り値

プログラミング初心者です。pythonを勉強しています。
戻り値というのがよくわかりません。
・自動販売機でいうと、お金が引数で、出てくるジュースが返り値
・返り値はほかの関数でも再利用できるようにするもの
という説明をうけました。
それならばなぜ、以下のコードで変数mpgが宣言されてない、と言われるのでしょうか?
関数calculate_miles_per_gallonの中で宣言されていますよね?それをprint関数で再利用しているものと思っているのですが。
def calculate_miles_per_gallon(miles_driven, gallons_used):
mpg=miles_driven / gallons_used
mpg = round(mpg ,1)
return mpg


miles = 500
gallons = 14
calculate_miles_per_gallon(miles,gallons)
print (mpg)


よろしくお願いします。

プログラミング初心者です。pythonを勉強しています。
戻り値というのがよくわかりません。
・自動販売機でいうと、お金が引数で、出てくるジュースが返り値
・返り値はほかの関数でも再利用できるようにするもの
という説明をうけました。
それならばなぜ、以下のコードで変数mpgが宣言されてない、と言われるのでしょうか?
関数calculate_miles_per_gallonの中で宣言されていますよね?それをprint関数で再利用しているものと思っているのですが。
def calculate_miles_per_gallon(miles_driven, gal...続きを読む

Aベストアンサー

変数のスコープというものを既に勉強されていますか?
それを知っていれば理解できると思います。

関数calculate_miles_per_gallonの定義の中にある変数mpgは
関数内のローカル変数であり、print(mpg)の変数とは別ものです。




----test.py (段付の為全角スペースを使用しているので実行時は要置換)
def calculate_miles_per_gallon(miles_driven, gallons_used):
  mpg=miles_driven / gallons_used
  mpg = round(mpg ,1)
  return mpg

# ↑ここまで関数の定義、ここまでのmpgはローカル変数であり関数の中にしか存在しないので
#  MAIN処理からは見えない


# ↓ここからMAIN処理(関数を呼んで戻り値を表示する)
miles = 500
gallons = 14
mpg = calculate_miles_per_gallon(miles,gallons) # 関数の戻り値をMAINの変数mpgに代入
print(mpg) # 関数の戻り値を代入しないと、いきなり登場したmpg(値不明)の値を表示させることになる
---- ここまで

変数のスコープというものを既に勉強されていますか?
それを知っていれば理解できると思います。

関数calculate_miles_per_gallonの定義の中にある変数mpgは
関数内のローカル変数であり、print(mpg)の変数とは別ものです。




----test.py (段付の為全角スペースを使用しているので実行時は要置換)
def calculate_miles_per_gallon(miles_driven, gallons_used):
  mpg=miles_driven / gallons_used
  mpg = round(mpg ,1)
  return mpg

# ↑ここまで関数の定義、ここまでのmpgはローカル変数であり関...続きを読む

Q 文字列か数字かの判別

プログラミングを学び始めたばかりのものです。pythonでif,for, whileを習い、100点満点のテストの点数を入力してその合計点、平均点を出し、その後の選択肢にyと入力するとまた繰り返す、というプログラムを書いています。複数のテスト結果を入力した後にendと入力すると、それまでの結果の合計を平均を計算するようにしています。0以下、あるいは100以上の数字を入力すると、数字は0から100ですよ、と警告を出すようにしています。
以下が私が書いたコードなのですが、これだとend以外の文字列を入力したときに、
if int(score)>=0 and int(score) <=100:
の処理をするときに、scoreがintじゃなきゃダメだよ、というエラーが出ます。
end以外の文字を入れたときに、0以下、または100以上の数字を入れた時と同じ処理、つまり警告を出したいのですが、どのようにすればいいでしょうか。
よろしくお願いします。

print("The Test Score program\n")
print ("Enter test scores")
print ('enter"end"to end the input')
print ("==========================")
total = 0
counter = 0

while True:
score = input ("Enter test score: ")
if score != "end":
if int(score)>=0 and int(score)<=100:
total = total + int(score)
counter+=1
else:
print ("Test score must be a number from 0 through 100. try again.")
else:
print ("==========================")
ave = total / counter
print ("total score:",total)
print ("avaerage score: ",ave)
total = 0
ave = 0
score = 0
counter = 0
enter = input ("Enter more sets of tests? (y/n)")
if enter.lower() == "y":
continue
else:
break

プログラミングを学び始めたばかりのものです。pythonでif,for, whileを習い、100点満点のテストの点数を入力してその合計点、平均点を出し、その後の選択肢にyと入力するとまた繰り返す、というプログラムを書いています。複数のテスト結果を入力した後にendと入力すると、それまでの結果の合計を平均を計算するようにしています。0以下、あるいは100以上の数字を入力すると、数字は0から100ですよ、と警告を出すようにしています。
以下が私が書いたコードなのですが、これだとend以外の文字列を入...続きを読む

Aベストアンサー

No.1です。

> score.isdecimal():
> としたいところなのですが、どうもそうはいかないようです。
> 変数scoreがintなのかstrなのかを判別して

何か誤解なさっていると思います。
変数scoreに入力されているのは「文字列」(str)です。
その文字列が、10進数として読み取れ、intに変換できるかを判断するのが score.isdecimal() です。

こちらで確認しましたが以下サンプルでは問題なく判断が行われています。

-----test.py
while True:
score = input ("Enter test score: ")
print(score.isdecimal())
------------

> python test.py
Enter test score: 123
True
Enter test score: 12a
False
Enter test score: abc
False


これをif文の判断に組み込んで、score.isdecimal()がTrueなら通常処理を、Falseならエラー処理を行えば良いだけですね。

No.1です。

> score.isdecimal():
> としたいところなのですが、どうもそうはいかないようです。
> 変数scoreがintなのかstrなのかを判別して

何か誤解なさっていると思います。
変数scoreに入力されているのは「文字列」(str)です。
その文字列が、10進数として読み取れ、intに変換できるかを判断するのが score.isdecimal() です。

こちらで確認しましたが以下サンプルでは問題なく判断が行われています。

-----test.py
while True:
score = input ("Enter test score: ")
print(score.isdecimal())
-----...続きを読む

Qpythonでの数のカウント方法について

お世話になります。
pythonあるいはrubyでの出現数の数え方について教えてください。
やりたい事としては、エクセルでいうとcountifのようなことで、現在の文字列は今までに何回出現したのかというのを調べたいです。
例えば
before_count.txt
というファイルに以下のようなデータがあったとすると
_____
あか
だいだい
きいろ
みどり
あお
あい
むらさき
あか
きいろ
みどり
あか
あお
むらさき
あか
______

結果が
after_count.txt
というようなファイルで
____________
あか 1
だいだい 1
きいろ 1
みどり 1
あお 1
あい 1
むらさき 1
あか 2
きいろ 2
みどり 2
あか 3
あお 2
むらさき 2
あか 4
____________
というような感じで出力されてほしいです。
単純に出現回数だけならばpythonで辞書型を使ってcounter関数を使ってカウントさせると、何回該当する文字が出たかはわかりますが、上記の結果のように今何回目というのがわからなくなってしまいます。
上記には例えば、
「あか」
という単語は4回出てきますが、「あか」という文字の横全部に出現数がかかれています。
エクセルでやってはいたのですが、一万行を超えたあたりからぐっと動きが悪くなり長い間エクセルがハングアップ状態になってしまいます。
欲しい結果ファイルとしては、befor_count.txtの並び順のままafter_count.txtの2列目に現在の出現回数が表示したものです。組み方を教えてください。

お世話になります。
pythonあるいはrubyでの出現数の数え方について教えてください。
やりたい事としては、エクセルでいうとcountifのようなことで、現在の文字列は今までに何回出現したのかというのを調べたいです。
例えば
before_count.txt
というファイルに以下のようなデータがあったとすると
_____
あか
だいだい
きいろ
みどり
あお
あい
むらさき
あか
きいろ
みどり
あか
あお
むらさき
あか
______

結果が
after_count.txt
というようなファイルで
____________
...続きを読む

Aベストアンサー

python3のコードを下記URLに書きました。
https://ideone.com/My0sl3

vbaのコードです。20万行で4,5秒でした。
---------------------------------
Option Explicit
Public Sub テキスト読み込み()
Dim fname As String
Dim out_fname As String
Dim fileNo As Long
Dim out_fileNo As Long
Dim text As String
Dim data As Variant
Dim dicT As Object
Set dicT = CreateObject("Scripting.Dictionary")
'ファイル名の完全パスを作成
fname = "D:\goo\data\before_count.txt"
out_fname = "D:\goo\data\after_count.txt"
If Dir(fname) = "" Then
MsgBox (fname & "は存在しません。")
Exit Sub
End If
out_fileNo = FreeFile '空き番号取得&オープン
Open out_fname For Output As #out_fileNo
fileNo = FreeFile '空き番号取得&オープン
Open fname For Input As #fileNo
'ファイル終端まで読み込む
Do Until EOF(fileNo)
Line Input #fileNo, text
If dicT.exists(text) = False Then
dicT(text) = 0
End If
dicT(text) = dicT(text) + 1
Print #out_fileNo, text & " " & CStr(dicT(text))
Loop
Close #fileNo
Close #out_fileNo
'成功終了
MsgBox ("完了")
End Sub

python3のコードを下記URLに書きました。
https://ideone.com/My0sl3

vbaのコードです。20万行で4,5秒でした。
---------------------------------
Option Explicit
Public Sub テキスト読み込み()
Dim fname As String
Dim out_fname As String
Dim fileNo As Long
Dim out_fileNo As Long
Dim text As String
Dim data As Variant
Dim dicT As Object
Set dicT = CreateObject("Scripting.Dictionary")
'ファイル名の完全パスを作成
fname = "D:\goo\data\before_c...続きを読む

Q先に質問した画像が不鮮明の為 テキストを添付します 上から10行目はinvalid characte

先に質問した画像が不鮮明の為
テキストを添付します
上から10行目はinvalid character in identifierのエラー
 
上から17行目は忘れました
言語はpythonです
質問の仕方が悪い見たいですみません

Aベストアンサー

No8です。No9の方の指摘を含めて修正し、一応ここまで表示されるようになりました。
ソースは、
https://ideone.com/SfZIWW
に格納してあります。

Qpythonの集合のデータ変更

pythonの集合は、データに順番が無いようですが、
a = {1, 2, 3}

a = {1, 4, 3}
のように2番目のデータを2→4に変更することってできるのでしょうか?

Aベストアンサー

直接、更新するメソッドはないので
4を追加して、2を削除します。
a.add(4)
a.remove(2)

Qpythonの2重ループの内包表記

import numpy as np

a = np.arange(30).reshape(5,6)
a[a%2 == 0] = -1

と同じことを、2重ループの内包表記を使って書くことはできるでしょうか?

Aベストアンサー

> 2重ループの内包表記を使う場合

> a = np.array([[-1 if i%2==0 else i for i in j] for j in a])

> よりも良い書き方とかありますか?

ないんじゃないですかね?
内包表記を使う、としたらそれが一番良い形だと思いますよ。

Q構造体の勉強をしているのですが1と2は同じなのでしょうか?違うのでしょうか? もし違うならなぜ違うの

構造体の勉強をしているのですが1と2は同じなのでしょうか?違うのでしょうか?
もし違うならなぜ違うのか説明してください‼︎
よろしくお願いします。

1.typedef struct roll{メンバー};

2.typedef struct {メンバー}roll;

Aベストアンサー

「struct の直後に来るのが型でメンバーの後に来るのが新しい構造体の名前」の「型」と「構造体の名前」の違いってなんだろ.

さておき, これは typedef の仕様との関係がありますねぇ.

まず構造体の定義を完全に書くと
struct 構造体タグ メンバー定義 宣言子;
という形になります. ここで構造体タグは識別子, メンバー定義は
{ メンバーの宣言 }
という形で宣言子は変数やら配列やらポインタやらを表します. struct 以外は省略可能なのですが, 実際に意味を持つのは
・宣言子を省略する: 「struct 構造体タグ」で表される新しい構造体を定義する
・メンバー定義を省略する: 「struct 構造体タグ」で表される構造体型の変数などを宣言する
・構造体タグを省略する: 構造体タグがなんらかの理由で不要なときにはこの形式もあります
・メンバー定義と宣言子を省略する: 「struct 構造体タグ」で表される構造体型があることを宣言する
の 4つに限られます (全部省略しちゃダメなのは明らかだと思うけど). 再度確認しておくと, 「struct 構造体タグ」で 1つの型を表します.

質問文にある 2つの文を (typedef を除いて) 解釈するとそれぞれ
1. 宣言子を省略している. roll が構造体タグで, 「struct roll」という型を定義する
2. 構造体タグを省略している. roll は宣言子で, この場合は roll という変数を宣言する
となります. そして, *typedef がなければ*どちらも合法です (ただし, 当然ですが意味は違います).

で typedef の影響が出ます. typedef は
宣言子に含まれる識別子に対し, 「typedef がなければ与えられるはずの型」の別名として定義する
という働きをもちます. 例えば
int FOO, *Bar;
だと
・FOO は int型の変数
・Bar は int へのポインタ型の変数
なので, ここに typedef を付けた
typedef int FOO, *Bar;
では
・FOO は int型の別名
・Bar は int へのポインタ型の別名
となります. このように typedef では「別名を定義する」都合上, 宣言子はどうしても必須となります. 従って, 宣言子が省略された 1 はダメということになります.

「struct の直後に来るのが型でメンバーの後に来るのが新しい構造体の名前」の「型」と「構造体の名前」の違いってなんだろ.

さておき, これは typedef の仕様との関係がありますねぇ.

まず構造体の定義を完全に書くと
struct 構造体タグ メンバー定義 宣言子;
という形になります. ここで構造体タグは識別子, メンバー定義は
{ メンバーの宣言 }
という形で宣言子は変数やら配列やらポインタやらを表します. struct 以外は省略可能なのですが, 実際に意味を持つのは
・宣言子を省略する: 「struct 構造体タグ」...続きを読む

Qインタプリタ言語とスプリクト言語

インタプリタ言語とスプリクト言語の違いがいまいち分かりません。

分かる方よろしくお願いいたします。

Aベストアンサー

スクリプト言語
一般の利用者でも扱える程度に簡単で、短い台本(スクリプト)を書く目的で使われる様な、プログラミング言語の分類
技術者が使う様な、高機能ながら高難度な汎用言語と比べられる。

インタプリタ
ソースコードを、なんらかの翻訳作業をしながら実行する、処理系の分類
コンパイラ
ソースコードを、なんらかの翻訳作業をまとめて行い実行可能な形式を作り出す、処理系の分類

インタプリタ言語
とくにそのようなプログラミング言語の分類は無い
インタプリタ処理系で実行されることが一般的なプログラミング言語、ならばスクリプト言語が多く挙げられるが、
言語によって処理系が固定されることは通常あり得ない

Qこの写真のようになってしまうのは何故でしょうか?

この写真のようになってしまうのは何故でしょうか?

Aベストアンサー

該当のブツを試したことはありませんけども……。

https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code
内容的に細分化して、1つのGitリポジトリから分裂(?)している為、Adafruit-Raspberry-Pi-Python-Code.gitでは何も取得できないからじゃないですかね?

ADS1x15を使いたいなら…
https://github.com/adafruit/Adafruit_Python_ADS1X15
からではないでしょうか?
「Installation」のところに手順は書かれているので試してみてはどうでしょう?

Q簡単にEXEファイルを作れるプログラミング言語/開発環境

「C:\xxx.exe C:\xxx.txt」のような単純な処理を実行するだけのEXEファイルを、なるべく簡単に作りたいのですが、お勧めの言語や開発環境はありますでしょうか。

高度な事は求めていないので、Visual Studioのように大掛かりでなく、容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

ご存知の方がおられましたら、お教え頂けると有難いです。

Aベストアンサー

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319




あとは比較的マイナー言語ですがGolangとか(https://golang.org/)

> 容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

は満たすと思います。
C言語ほどメモリ管理に気を使わなくてよいですし、他の要件も満たすと思います。
学習コストはかかりますが……

ご参考まで。

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
...続きを読む


人気Q&Aランキング