X



くだすれPython(超初心者用) その40
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/11/22(木) 17:09:34.92ID:JDIt5Mgb
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答を書くことも禁ず

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

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

◆PythonのHome Page
http://www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆ソースコードをそのまま5ちゃんにコピペするとインデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
0002デフォルトの名無しさん
垢版 |
2018/11/22(木) 19:19:37.48ID:0ZNuIH9c
おつ
0005デフォルトの名無しさん
垢版 |
2018/11/23(金) 11:59:18.54ID:e4GZHgy/
O2
0006デフォルトの名無しさん
垢版 |
2018/11/25(日) 23:39:50.93ID:XsgTGPcG
スタイル変換で遊んでみようと以下を落として実行してみたのですが、使えませんでした
https://github.com/alexjc/neural-doodle

yield x.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 6: invalid start byte

xの中身。bytesクラス
b'# 1 "<\x91g\x82\xdd\x8d\x9e\x82\xdd>"\r\n'



unicodeだったらbyteは3の倍数になるのかな、と思いましたが、
エラーの心辺りのある方いませんか?
0007デフォルトの名無しさん
垢版 |
2018/11/25(日) 23:40:40.66ID:XsgTGPcG
すいません、ライブラリのtheanoが何か変だったみたいです
>>6は無かったことにして下さい。
0008デフォルトの名無しさん
垢版 |
2018/11/26(月) 13:37:07.35ID:M4lkR7sD
てすてす
0009デフォルトの名無しさん
垢版 |
2018/11/26(月) 18:37:52.54ID:RZDJJRLo
def dataframe():
   途中省略
data=pd.Dataframe(◯◯◯◯)

こんな感じで作りたいものをデータフレームで取り出したんですけど、この変数dataを関数外でも使うにはどうすればいいんですか?
なんかグローバル変数とかあまり理解できてないようでうまくいきません
0010デフォルトの名無しさん
垢版 |
2018/11/26(月) 18:40:59.33ID:R1p2URo7
DATA=pd.Dataframe(◯◯◯◯)

def dataframe():
   途中省略
   global DATA
0012デフォルトの名無しさん
垢版 |
2018/11/26(月) 18:47:24.65ID:R1p2URo7
>>11
なんかそっちのことがしたかったっぽいな >>9

10はまとはずれだからムシしておk
0015デフォルトの名無しさん
垢版 |
2018/11/26(月) 23:13:17.66ID:nvtZwlw2
>>6
unicode の各文字のバイト数は、決まっているのか?
家族などの変な記号もあるし

1〜6 とか、各文字で異なるのでは?
0017デフォルトの名無しさん
垢版 |
2018/11/27(火) 00:04:39.51ID:hnWq7+5I
質問してるクルクルパーが使ってるコードはShift_JIS
で、utf-8は1〜4バイトのマルチバイトコードだからな

マジで質問してるヤツ回答してるヤツも知恵遅れしかいない
コレがウンコスクリプト使ってるようなヤツラの程度
0018デフォルトの名無しさん
垢版 |
2018/11/27(火) 00:31:27.11ID:2AqLChXV
>>17
だったら来なきゃいいのにPythonが気になって仕方ないから見に来るんでしょ?子供みたい
0019デフォルトの名無しさん
垢版 |
2018/11/27(火) 01:44:46.59ID:AwFrXlKh
Unicodeは文字に番号を振ったもの
UTF-8は文字に振られた番号の表現ルールと思えば良い

そしてUTF-8は旧来のLatin-1文字(半角英数字と思えば良い)を1バイトで処理し、それ以外の文字を最大4バイトまでの可変長で処理する、なのでバイト数決め打ちは無理

ところが長いこと4バイト表現の文字がほとんどなかったために、UTF-8を3バイトとみなして処理するプログラムがある、MySQLのutf8とかね

最近絵文字の導入などで4バイト表現が増えたので、最大3バイトと勘違いして解説してるサイトなんかを参考にするとコケるよ
0020デフォルトの名無しさん
垢版 |
2018/11/27(火) 23:50:42.92ID:+o3jSRgH
Ubuntuでtensorflowをインストールするのですが、Pythonの環境構築に使うツールはvenvやpyenvなど一杯ありますがどれ使えばいいんですかね?
0023デフォルトの名無しさん
垢版 |
2018/11/28(水) 04:34:45.68ID:seMAmMUm
いい加減こういう乱立するの収束しないかね
0024デフォルトの名無しさん
垢版 |
2018/11/28(水) 05:07:51.88ID:an+XrSQg
システムのpythonを汚さないようにするには、pyenvで特定のバージョンをインストールして、そのバージョンを利用して仮想環境を作るのが一番いいのかね(´・ω・`)
0026デフォルトの名無しさん
垢版 |
2018/11/28(水) 06:15:27.58ID:yLGz5Ts0
もしUbuntuそのものが仮想環境ならaptでインスコして使い捨て環境にするのもあり
0028デフォルトの名無しさん
垢版 |
2018/11/28(水) 09:51:10.91ID:tWq+IIt8
それよく引用されてるけど
venvよりpipenvの方が主流になりつつあって先が読めてなかった感があるので更新して欲しい
venvはマルチバージョン対応しないよ
0030デフォルトの名無しさん
垢版 |
2018/11/28(水) 11:03:13.19ID:f9eU1lMs
正直バージョン細かく指定してインストールなんてしないし2と3分けるだけならvenvで良くない?
デフォルトで入ってるし
0031デフォルトの名無しさん
垢版 |
2018/11/28(水) 11:14:27.78ID:Yz2JQYtB
pythonに似た言語でパズル作りたいんですが2次元配列を教えてください
x_l=[0,1,2,3]
y_l=[4,5,6,7]
mix=[x_l,y_l]

print(mix[0][0])

この結果だと0になります
マスの位置を表す方法というのはどうしたらいいんでしょうか
0032デフォルトの名無しさん
垢版 |
2018/11/28(水) 11:34:57.78ID:MxMaORwF
>>31
print(mix)してみれば、mixがどうなっているのかわかる。
[[0, 1, 2, 3], [4, 5, 6, 7]]

4×4マスのグリッドということならこういう事をやりたいんじゃないの?
[[[0, 4], [1, 4], [2, 4], [3, 4]], [[0, 5], [1, 5], [2, 5], [3, 5]], [[0, 6], [1, 6], [2, 6], [3, 6]], [[0, 7], [1, 7], [2, 7], [3, 7]]]
0033デフォルトの名無しさん
垢版 |
2018/11/28(水) 11:35:45.75ID:mi7H1pc4
・どのようなパズルか?
・コードは何をしたいのか
・本当はどのような結果になって欲しかったのか?
・2次元配列の何を知りたいのか?
少なくともこの辺が分からないと答えられないよ
0034デフォルトの名無しさん
垢版 |
2018/11/28(水) 11:49:44.26ID:wQALAfN1
numpy.meshgrid
003635
垢版 |
2018/11/28(水) 13:55:15.28ID:eIHsuPDh
progate で、文法でも勉強すれば?
2次元配列がわからないとか、文法書も読んでないだろ

Python が難しいなら、Ruby からやればよい
0043デフォルトの名無しさん
垢版 |
2018/11/29(木) 14:05:22.92ID:kjOJrV++
apiについて質問したいんですがコレってドキュメントが整備されてないものは使えないていうものなんでしょうか

あるapiでうまくいかず開発元に問い合わせたらドキュメント不備で必須パラメータ足りてませんでしたこのパラメータも指定してね
とか言われたんですがドキュメント見て分からないとき問い合わせしかないんですかね
0045デフォルトの名無しさん
垢版 |
2018/11/29(木) 15:05:44.39ID:qd4rCcG0
api側のドキュメント不備なのに呼び出し側のコード晒してどうするの?バカかな。
0047デフォルトの名無しさん
垢版 |
2018/11/29(木) 15:27:01.59ID:jDQTBB27
すまん、読み間違えた

>>43に聞いても時間がかかりそうだから
呼び出し側でも何をしたいかをコードごと晒した方が早いって意味で書いた
0048デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:00:22.69ID:C+POVdju
>>45
バカはおまえや恥ずかしいw
0050デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:40:14.52ID:VmH99jfx
>>43
公式のドキュメントを読む
公式フォーラムを読む
ぐぐってStackoverflowなどに同様の事例がないか探す
公式フォーラムできいてみる
金払ってサポート契約してるAPIなら問い合わせる
API側のソースコードを読む
Stackoverflowなどできいてみる
開発元が質問を受け付けてたらきいてみる(最終手段)
0051デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:40:33.75ID:o9bA/aga
            ([[[[[)<
  ([[[[[)<              ([[[[[)<
        ([[[[[)<
([[[[[)<                    ([[[[[)<
             ([[[[[)<

   ([[[[[)<  おおっとここでダンゴムシの大群が!  ([[[[[)<

        ([[[[[)<             ([[[[[)<
  ([[[[[)<                       ([[[[[)<
           ([[[[[)<
([[[[[)<             ([[[[[)< 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0052デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:57:04.61ID:kjOJrV++
>>50
ありがとう
その手順全部踏んでたけど最近の製品らしく英語祭も含めて殆ど情報ないし問い合わせで良かったぽいのでとりあえず方向性はあってそうで一安心
0053デフォルトの名無しさん
垢版 |
2018/11/30(金) 15:29:28.17ID:l9pzzQXt
スクレイピング勉強するとして、前提知識にjsonやらhtmlやら必要ですよね?
0056デフォルトの名無しさん
垢版 |
2018/11/30(金) 18:55:56.92ID:x01dDAsY
フロントエンドしか出来なかった頃は
html取得→そのhtmlにjs追加→jQueryで取得ってやってたな
今見たら奇怪なプログラムや
0057デフォルトの名無しさん
垢版 |
2018/11/30(金) 22:38:46.93ID:cIO0a97u
フロントエンドてなんやと思とるんやおのれは?
0058デフォルトの名無しさん
垢版 |
2018/11/30(金) 23:08:23.93ID:x01dDAsY
フロントはjsとcssとhtml当たりのブラウザ向けのプログラムと思ってたけど違うの
0059デフォルトの名無しさん
垢版 |
2018/11/30(金) 23:31:35.97ID:VjmtC3o0
jQuery のCSS セレクターを学べ。Emmet も同じ。
Ruby のNokogiri とか

# . >
id, class, など

XPath は可読性が低いから、CSSセレクターの方がよい
0060デフォルトの名無しさん
垢版 |
2018/12/01(土) 13:20:06.08ID:DMhN4yyl
Pythonによるスクレイピング&機械学習 開発テクニック使って勉強してるんだけど難しすぎない?
こんなのみんなできるのかよ
0061デフォルトの名無しさん
垢版 |
2018/12/01(土) 13:56:23.78ID:b7Xa0FGW
スクレイピングは本当にめんどくさい
機械学習やるならデータセット使ったほうがいいんじゃないか
0062デフォルトの名無しさん
垢版 |
2018/12/01(土) 14:29:48.37ID:Jgv37Yi1
htmlからデータをインポートしてxlsxwriterでexcel形式に変換させるファンクション作らなきゃいけないんだけど
まず任意パースからのインポートの仕方がわからなくて躓いてる...
0063デフォルトの名無しさん
垢版 |
2018/12/01(土) 16:22:03.90ID:ZwBPlgP3
特定のモジュールから発生する例外だけをキャッチしたいんだけど、どうやったらいいですか?
例えば以下のnumpyモジュールの例外だけ検知したいです。
例外を替えたりなどhoge()メソッド内は修正しないで。
――――――――――――――――――――
import numpy
def hoge():
123 + ‘a’ #=>TypeError
numpy.zeros((‘dummy’)) #=> TypeError (こっちだけキャッチしたい)
try:
hoge()
except TypeError as e:
print(‘numpyモジュールで例外が発生しました。’)
――――――――――――――――――――
0064デフォルトの名無しさん
垢版 |
2018/12/01(土) 16:25:13.45ID:ZwBPlgP3
インデントを全角にして再投稿です・・
――――――――――――――――――――
import numpy
def hoge():
  123 + ‘a’ #=>TypeError
  numpy.zeros((‘dummy’)) #=> TypeError (こっちだけキャッチしたい)

try:
  hoge()
except TypeError as e:
  print(‘numpyモジュールで例外が発生しました。’)
――――――――――――――――――――
0066デフォルトの名無しさん
垢版 |
2018/12/01(土) 18:19:33.68ID:vZu4rQev
どちらも同じTypeErrorだから片方だけキャッチするのは難しい
キャッチ後にエラーメッセージで判別する位しか思いつかん
006764
垢版 |
2018/12/01(土) 20:32:02.49ID:ZwBPlgP3
そうですか、了解です。ありがとうございました。
0069デフォルトの名無しさん
垢版 |
2018/12/02(日) 01:42:08.33ID:aLOgXgka
>>61
データセット便利やな。
てかpython勉強して1か月で
クラスとか継承で詰んでるんだけど
ここ最初に理解すべきなのかな
0071デフォルトの名無しさん
垢版 |
2018/12/02(日) 06:39:16.56ID:Zo6Yad1S
フォーマットて列の並びとかのこと?数値の桁とかのこと?
並びのことならFEED_EXPORT_FIELDSに設定しろとドキュメントにある。
桁とかの表現なら、cssセレクタで値を取得してFieldオブジェクトに突っ込んだすぐあとに、欲しい値が入ってるところをフォーマット済みのテキストに書き換えるとかはどうかな。
公式ドキュメントではFieldオブジェクトはビルトインdictのエイリアスだと書いてあるので、書き換えても問題ないかと。
0072デフォルトの名無しさん
垢版 |
2018/12/02(日) 08:03:48.35ID:/AADpWgo
>>69
classが分からない状態で機械学習とか過激派やね

何にしろクラスは基礎中の基礎なので、
とりあえず一つのクラスを作成していじり倒せるようにしたほうがいい
クラスの継承やトレイト辺りは「あーこういう機能があるんだな」ぐらいでいい。自分だけで作るならそんなに使わない
0073デフォルトの名無しさん
垢版 |
2018/12/02(日) 09:26:53.39ID:euNJd4h1
>>71
レスサンクス
FEED_export_field はsettings.pyに書けば良いのかな
Fieldオブジェクトっていうのは
items.pyの中で定義したクラスのことかな
辞書的に後から編集できるのか、じゃあ余計な部分をトリムしたりstrからintに変換できるな
0077デフォルトの名無しさん
垢版 |
2018/12/02(日) 12:47:11.39ID:Zo6Yad1S
>>76
あー自分は使い捨てで作ってたからpipelineは知らなかった
けどこっちのほうがよさそうね
0078デフォルトの名無しさん
垢版 |
2018/12/03(月) 16:30:53.94ID:VunURnRZ
改行が含まれた文字列をそのまま出力するにはどうすれば良いんでしょうか
test = '改¥n行'
print test
これで改行されずにシングルクォーテーション抜いた改¥n行が表示されるようにしたいです
0079デフォルトの名無しさん
垢版 |
2018/12/03(月) 16:37:58.75ID:lgEDnwL/
print test.replace(‘\n’, ‘\\n’)
0080デフォルトの名無しさん
垢版 |
2018/12/03(月) 18:24:59.72ID:xHLM582p
以下のような、Ruby のヒアドキュメントみたいに、
書いたものがそのまま表示される、機能は無いのか?
特殊文字が解釈されないもの

text = <<'TEXT'
改\n行
TEXT

puts text #=> 改\n行
0081デフォルトの名無しさん
垢版 |
2018/12/03(月) 19:01:12.17ID:+OGeTNm4
>>80
この板の人たち事情があってRubyをNG登録してる割合高いから「名前を言ってはいけないあの言語」とかで言い替えたほうが読んでもらえるよ。
0082デフォルトの名無しさん
垢版 |
2018/12/03(月) 19:20:33.21ID:7bADYQ3u
BashやPerlといえばどうか…複数行文字列なら"""〜"""や'''〜'''があるし
RAW文字列ならrプリフィックスを付ける、文字列リテラルの連続は結合される
0083デフォルトの名無しさん
垢版 |
2018/12/03(月) 20:13:07.55ID:xB3jSBXT
お前らPythonごときでくだらない質問なんてしてんなよ
こんなのただのスクリプトだから早くなれろ
0084デフォルトの名無しさん
垢版 |
2018/12/04(火) 01:47:39.12ID:RJkraVST
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(1)
url = "http://yahoo.jp";
browser.get(url)

file = open("source.html","w")
file.write(browser)
file.close()

上手く書き出せません。どうしたらいいでしょうか?

恐らく型が違うのだと思いますが、それでも無理矢理書き出す方法はありますか?
0085デフォルトの名無しさん
垢版 |
2018/12/04(火) 03:08:21.71ID:3ifFv/XY
TwitterのAPIの取得って審査厳しいの?
取った人おる?
0086デフォルトの名無しさん
垢版 |
2018/12/04(火) 06:06:01.32ID:qgvunLXb
>>84

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(1)
url = "http://yahoo.jp";
browser.get(url)

hoge = browser.page_source

file = open("source.html","w")

file.write(hoge)

file.close()
0087デフォルトの名無しさん
垢版 |
2018/12/04(火) 14:13:10.16ID:RJkraVST
>>86
レスありがとうございます。
とても助かりました。

また、これについて何とかそのままの状態でもエラーを発生させなかったり、
エラーを勝手に保存することでプログラムを止めないで次に薦める方法はありますか?

Perlをよく使うのですが、Perlの場合型が違った場合でもその型?のメモリ番地?を保存してくれそこから容易に調べることが出来ます。
また、実用上プログラムが止まらないので助かることも多いです
同じような使い方が出来ますでしょうか?
0088デフォルトの名無しさん
垢版 |
2018/12/04(火) 15:06:12.93ID:eKuwOju4
参考までに、Ruby のnokogiri を使って、スクレイピングしてみた。
head > title を取得した

require "selenium-webdriver"
require "nokogiri"

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')

driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to "https://www.yahoo.co.jp/";

doc = Nokogiri::HTML( driver.page_source )

element = doc.at_css( "head > title" )
puts element.text #=> Yahoo! JAPAN

driver.quit
0089デフォルトの名無しさん
垢版 |
2018/12/04(火) 15:15:31.47ID:qgvunLXb
>>87
>エラーを勝手に保存することでプログラムを止めないで次に
2系なら try except とゆう構文でエラー時エラーの種類と内容を書き出しつつ先へ進めさせることができるが
3系だとexceptのあとにエラーの種類を指定しないとおこられるようになったので
実質無理げー
0090デフォルトの名無しさん
垢版 |
2018/12/04(火) 15:58:37.22ID:eKuwOju4
例外の握り潰しか?

Ruby では、rescue で例外を捕捉しても、
何も処理せず、またはログを記録して、そのまま次の処理へ進む

例外の握り潰しは、やってはいけないのが常識だけど、面倒くさいならそうすれば?
ただし、仕事では禁止!
0091デフォルトの名無しさん
垢版 |
2018/12/04(火) 16:37:54.49ID:VeulgD+K
>>1の冒頭に書いてもこれだからな。キチガイは始末におえない。
もうスレタイに書くしか。
0092デフォルトの名無しさん
垢版 |
2018/12/04(火) 16:41:20.65ID:yoAmFvIw
>>85
7月にとったときは特に難しくはなかったよ、ただテストツイート一回でなぜかアク禁食らって一度取り直したけどw
0093デフォルトの名無しさん
垢版 |
2018/12/04(火) 16:59:45.68ID:1lg34cOD
そっかー
残念!

仕事というか株の売買プログラムとかPerlで作ってるけど
再現性の低い通信エラーとか色々な理由で止まる方が困るからとりあえず動くのが大切
で、エラーが仮に出たとしても最後の所でしっかりとチェックして不正があれば全ての実行を取り消したり通知するようにしてるからミスが起こらない
プログラマとしてはダメなのかも知れないけど、自分で運用まで全て理解してやってると、とりあえず動いてくれる方が助かることも多いんだわ
頻度の少ないエラーとか全て潰してたら何年もかかるしね・・・

Pythonってとりあえず動かして、ちょっと修正してとかプログラムというよりもスクリプト的な使い方も多そうだから
エラーをスキップするような方法もあったら便利そうだけどかなり厳しい言語なんだな
0094デフォルトの名無しさん
垢版 |
2018/12/04(火) 17:22:18.57ID:eKuwOju4
漏れは、Ruby で、selenium webdriver を使うけど、
5ch, Showroom とか、しょっちゅうエラーが起きる

通信回線が混んでいると、1分掛かっても、全部を読み込めていないから、
外部プログラム(selenium)からアタッチできない

数十個のJavaScript を読み込むだろ。
延々と、アタッチできない状態が続く
009594
垢版 |
2018/12/04(火) 17:27:09.75ID:eKuwOju4
たぶん、向こうのサイトが、すべてのJavaScript を読み込んで、
idle 状態になっていないと、外部プログラム(selenium)からアタッチできない

アタッチ要求を出しても、ずっと待たされる
009794
垢版 |
2018/12/04(火) 17:54:17.94ID:eKuwOju4
>>88
修正

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 30 # 要素の検索の timeout

driver.navigate.to "https://www.yahoo.co.jp/";

sleep 10

doc = Nokogiri::HTML( driver.page_source )

通信回線の込み具合は、どうにもならない

要素の検索のタイムアウトを設定したり、スリープして待つとか、
異なるサイトなら、タスクランナーで並列化するとか
0099デフォルトの名無しさん
垢版 |
2018/12/04(火) 18:07:30.86ID:cF/7Fnqn
96も1に違反してるじゃんw
それに他の言語からやって来たのならそれで出来ることを聞くのは普通じゃね?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況