くだすれPython(超初心者用) その38

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2018/05/17(木) 11:09:14.54ID:WeqM6vIc
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その37
http://mevius.5ch.net/test/read.cgi/tech/1521271945/

0952デフォルトの名無しさん2018/08/16(木) 15:51:55.16ID:z5KyUW64
特定の文字列をUTCの時間だと指定してUnix時間に変換する方法を教えて欲しいです。
current_dataのStartTimeには2018-08-16T06:05:37と書かれてあります。
https://pastebin.com/K9qEC75T

これだと9時間ずれてしまいます。

0953デフォルトの名無しさん2018/08/16(木) 16:00:32.85ID:wiNukf+g
strptime
mktime

0954デフォルトの名無しさん2018/08/16(木) 16:06:07.11ID:wiNukf+g
pytz

0955デフォルトの名無しさん2018/08/16(木) 17:43:51.77ID:z5KyUW64
>>953
>>954
詳しくお願いできますか?

0956デフォルトの名無しさん2018/08/16(木) 18:11:17.83ID:Lbm+OgmQ
>>952
time.timezoneかdatetime.datetime

0957デフォルトの名無しさん2018/08/16(木) 18:20:15.73ID:z5KyUW64
ちょっとわかりそうです

0958デフォルトの名無しさん2018/08/16(木) 18:32:07.07ID:z5KyUW64
これでできました

baseStartTime = '2018-08-16T08:02:45+0000'
baseTimeFormat = '%Y-%m-%dT%H:%M:%S%z'
utc = datetime.strptime(baseStartTime, baseTimeFormat)
unix = utc.timestamp()

>>956
調べてみます

0959デフォルトの名無しさん2018/08/16(木) 21:32:10.60ID:VSd23G4R
https://ideone.com/rGkQxM

pythonはCバインディングの関数よんでるだけだからな
調べてやったぞ

baseStartTimeがUTCならNo1.でいける

 setenv("TZ", "UTC", 1); ← コレで切り替える
 strptime(sz_time, sz_fmt, &t_tm);
 return mktime(&t_tm);

baseStartTimeがJST(UTC+09:00)ならNo2.でいける

 setenv("TZ", "Asia/Tokyo", 1); ← コレで切り替える
 strptime(sz_time, sz_fmt, &t_tm);
 return mktime(&t_tm);

0960デフォルトの名無しさん2018/08/16(木) 22:13:23.11ID:z5KyUW64
>>959
これはCですか?

0961デフォルトの名無しさん2018/08/16(木) 22:28:06.44ID:VSd23G4R
そう

しかしコタエとしては
オマエが作ったプログラムを起動する前に
適切な環境変数設定すれば
期待通りの結果になると考えられる

起動するまえにシェルで
TZ="UTC"
※ baseStartTimeがUTCの場合
もしくは
TZ="Asia/Tokyo"
※ baseStartTimeがJSTの場合

とすればいいハズ

0962デフォルトの名無しさん2018/08/17(金) 11:42:19.78ID:23Jvz4gX
GAEとか変なTZの鯖もある

0963デフォルトの名無しさん2018/08/17(金) 13:46:36.32ID:GPgJleJz
csvに入力してある内容からランダムで5W1Hゲームの答えを表示するコードをお願いします

0964デフォルトの名無しさん2018/08/17(金) 13:56:50.54ID:XabtsNLS
宿題は宿題スレで

0965デフォルトの名無しさん2018/08/17(金) 14:32:50.18ID:GPgJleJz
宿題ではないです
作り方がわからないので教えてください

0966デフォルトの名無しさん2018/08/17(金) 15:22:13.09ID:ZZpHYasb
matplotlibで散布図を作りたいのですがプロットする点は点ではなく外部ファイルの画像データを使いたいです
これは可能でしょうか?

0967デフォルトの名無しさん2018/08/17(金) 15:32:15.30ID:XabtsNLS

0968デフォルトの名無しさん2018/08/18(土) 01:01:12.82ID:K3y6E3T8
>>963-965
Ruby では、こういう感じ。
Python のCSV module も見れば?

# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
input_file = "input.csv"

CSV.foreach(input_file, col_sep: ":") do |row|
puts row[1] # 列[1]
end

0969デフォルトの名無しさん2018/08/18(土) 03:00:30.68ID:xt3abbWh
with open(“file”, “w”) as csv_file:
# csv_file.readline()とかsplitとかご自由に。

0970デフォルトの名無しさん2018/08/21(火) 18:18:57.90ID:4zizh11G
秒を時:分:秒に変換したいです。
その時、時が00なら分:秒だけにしたいです。
以下のように書いたんですが、ifが動いてくれないです。
どう改善したらよいですか?

duration = "{0.hours:02}:{0.minutes:02}:{0.seconds:02}".format(relativedelta(seconds=baseDuration)) # 曲の長さ (時:分:秒に変換)
if str(duration)[0:1] == '00':
duration = str(duration[3:7])

0971デフォルトの名無しさん2018/08/21(火) 18:25:48.79ID:4zizh11G
>>970
自己レス

if str(duration)[0:2] == '00':
duration = str(duration[3:8])

これで動いてくれました。
最初の二文字の指定だから[0:1]、[3:7]だと思うんですが、なぜ[0:2]、[3:8]としないといけないんですか?

0972デフォルトの名無しさん2018/08/21(火) 18:42:19.65ID:JvEAafEP
>>971
そういう言語仕様だから
としか言いようがない

0973デフォルトの名無しさん2018/08/21(火) 18:51:53.44ID:4zizh11G
>>972
うまく理解する方法があればいいんですが、仕様という事で理解する事にします。

0974デフォルトの名無しさん2018/08/21(火) 19:13:14.34ID:4zizh11G
データをcsvファイルに保存したいです。
コンマ区切りだと、保存しようとしている項目の中にコンマが含まれているとおかしくなってしまうので、
"value1","value2","value3"
って感じで「"」で囲む事にしました。

csvFile = open(fileName, mode='a', encoding='utf-8')
print(f'"{unixStartTime}","{startTime}","{song}","{artist}","{album}","{releaseDate}","{identifier}","{itunesTrackId}"', file=csvFile)
csvFile.close()

しかし、項目の中に「"」が含まれていると、それもまたおかしくなってしまいました。
一般的に、どう書くんでしょうか?

0975デフォルトの名無しさん2018/08/21(火) 19:20:59.43ID:JvEAafEP
>>973
C言語とかの経験があれば
for(i = 0; i < 2; i++){ printf("%d\n", i); }
で、0, 1 しか表示されないからすんなり理解できるんだけど…

0976デフォルトの名無しさん2018/08/21(火) 19:26:23.20ID:mIkZeZ6h
>>975
それはちょっと違うだろ

0977デフォルトの名無しさん2018/08/21(火) 20:28:45.21ID:9TRNijf4
>>971
スライスの添字は要素と要素の「間」を示していると考えればいい

https://docs.python.jp/3/tutorial/introduction.html
> スライスの使い方をおぼえる良い方法は、インデックスが文字と文字の あいだ (between) を指しており、最初の文字の左端が 0 になっていると考えることです。そうすると、 n 文字からなる文字列中の最後の文字の右端はインデックス n となります。例えばこうです:

リンク先にASCII図があるのでそれも見て

0978デフォルトの名無しさん2018/08/21(火) 20:50:48.17ID:4zizh11G
>>975
よく分からないです

>>977
なるほど!
今までpythonでは0から始まるので、1文字目は0、3文字目は2と理解していたので、>>970-971 の疑問が湧いたんですが、要素と要素の間と考えれば上手く理解出来ました

0979デフォルトの名無しさん2018/08/22(水) 00:34:33.92ID:h82tfzI1
Ruby の範囲演算子(Range)では、

(3..5) # 3, 4, 5
(3...5) # 3, 4

.. は終端を含む。
... は終端を含まない

0980デフォルトの名無しさん2018/08/22(水) 01:21:48.37ID:h82tfzI1
>>974
Ruby では、
1. :col_sep フィールドの区切り文字
2. :row_sep 行区切り文字
3. :quote_char フィールドをクオートする文字

1は、カンマかタブ
2は、\r\n か\n
3は、\(バックスラッシュ)

たぶん、"a\"b"

0981デフォルトの名無しさん2018/08/22(水) 02:05:11.40ID:ETkOLyp8
>>980
いい加減にしろよ池沼。
そんなにruby嫌いを増やして楽しいか?

0982デフォルトの名無しさん2018/08/22(水) 06:33:35.91ID:Sg/L3P+S
相手するなよ…

0983デフォルトの名無しさん2018/08/22(水) 07:36:50.81ID:oqm7/Tfy
>>977
これって最初は戸惑うよね

0984デフォルトの名無しさん2018/08/22(水) 07:47:10.46ID:POyIOdJh
言語によってスライス系の関数やメソッドの引数もバラバラだからなあ

slice(from, to)

to を含んだり to - 1 だったり

slice(from, length) だったり

覚えきれないからマニュアル見ながらやってるよ

0985デフォルトの名無しさん2018/08/22(水) 08:38:43.98ID:js75fZuK
>>974
普通csvライブラリ使う

0986デフォルトの名無しさん2018/08/22(水) 16:31:49.60ID:Q4k/bgn4
>>983
最初だけな
インデントとかもそう
食わず嫌いが多すぎ
外見に惑わされず
がっつり身を取れ

0987デフォルトの名無しさん2018/08/22(水) 19:42:27.90ID:jIQXHl+4
身を取れってどこの方言?

0988デフォルトの名無しさん2018/08/22(水) 21:47:03.68ID:N6xAlRSo
デブは痩せろってことだろう

0989デフォルトの名無しさん2018/08/22(水) 22:00:26.08ID:mHU9sjBy
ぐぬぬ

0990デフォルトの名無しさん2018/08/23(木) 08:12:34.88ID:UTWNvtw2
file “<stdin>”, line1, in<module>
NameError: name ‘ファイル名やら’ is not defined


というエラーが出てしまいます。
この前まで使えてました。
何が原因かわかりますか?

>>>a=5
>>>a
5

などはできます。
.pyが動きません。

0991デフォルトの名無しさん2018/08/23(木) 13:03:33.23ID:jtErK1hR
ファイル名やら?

0992デフォルトの名無しさん2018/08/23(木) 16:53:21.50ID:XM3jnZax
ネットラジオで現在放送されている曲情報を取得して表示するスクリプトを考えてます。

https://pastebin.com/uTd6r2ex

放送局側のJSONには現在の曲情報と次回のJSONの更新時間(だいたい数秒〜数十秒後)がかかれてあります。
次の曲が始まる時間が書いてあればいいんですが書かれてないので、現在の時間と次回のJSONの更新時間の差分秒でループさせて次回のJSONを取得する事にしました。
(放送局のサイトにあるWebプレイヤーのjavascriptでは20秒間隔で取得しているようでした)
放送されている曲がそのままなら更新後のJSONの中の曲情報ももちろんそのままで、次回の更新時間のみ変更されています。

曲が変わっていないのに、ループの時間が来たらその度に出力されるので、その処理は無駄だと思いました。

JSONが更新されても曲がそのままなら変わらない情報(例えば曲名など)をキャッシュとしてオンメモリのSQLiteに保存して、そこが変わってなければ出力しないようにすればいいんじゃないかと思ったんですが、他にいい方法がありますか?
教えてください。

現在のJSONの特定の項目をSQLに保存させて、PythonからSQLのそのレコードを取得する方法までは分かりました。
SQLには現在のJSONとひとつ前のJSONを記録させて、Pythonからはひとつ前のJSONのレコードを呼び出す方法も知りたいです。

0993デフォルトの名無しさん2018/08/23(木) 17:04:52.52ID:+UveuQfQ
曲の類似度で機械学習させて判定結果表示するのかと思った

0994デフォルトの名無しさん2018/08/23(木) 17:08:21.97ID:6XYPzAmV
memcached

0995デフォルトの名無しさん2018/08/23(木) 17:08:38.12ID:XM3jnZax
>>993
オンエア情報の分析をやってみたいんですが、その前段階のデータ取得ですでに躓いてます…

0996デフォルトの名無しさん2018/08/23(木) 17:20:11.29ID:XM3jnZax
>>994
どうもありがとうございます。
ググってみました。
怖そうな記事や古い記事ばかり引っかかります。
一般的にそれを使うのがいいんでしょうか?

0997デフォルトの名無しさん2018/08/23(木) 19:41:05.89ID:XM3jnZax
https://pastebin.com/g1gML3Ep

合ってるか分からないけれど、とりあえず動くようになりました

0998デフォルトの名無しさん2018/08/23(木) 19:41:36.70ID:XM3jnZax
>>997
失敗でした

0999デフォルトの名無しさん2018/08/23(木) 20:03:14.58ID:1ATD5kR7
男は失敗した分だけ性交に近づくんや諦めんな

1000デフォルトの名無しさん2018/08/23(木) 20:09:02.07ID:UPShE46p
1000GET!
Pythonのスペシャリストになります♪

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 8時間 59分 48秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。