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

このエントリーをはてなブックマークに追加
572デフォルトの名無しさん
プログラム自体超初心者です。ある入門書に下記のように書いてありました。
何度も読み返し、丸二日自力で考えたのですが、どうしても書いてある意味が分かりません。
特に”実際のデータ”、”実体”が何なのか分かりません。
結局”初期化メソッド”、”インスタンス”とは何なのでしょうか?

datetime.date(2030,4,14)
ところで、dateはデータ型の名前そのものですが、見方を変えると、datetimeが持っているdateという関数のようにも解釈できます。
つまり、ある型”の実際のデータ”を用意するには、その型と同じ名前のメソッドを呼び出せばいいのです
この”型と同じメソッド”の事を、特に初期化メソッドと呼びます。また、このように生成されたデータ型の”実体”の事を、特に、インスタンスと呼びます。

573デフォルトの名無しさん:2010/07/05(月) 00:24:31
>ある入門書

さっさと捨てろ
574デフォルトの名無しさん:2010/07/05(月) 00:41:35
インスタンスは型を具象化させたもので、具象化させるプロセスが初期化メソッドかな
まあその本はさっさと投げ捨ててプログラム書いてみた方が早いよ
575デフォルトの名無しさん:2010/07/05(月) 00:48:40
>>572
ほんとはオブジェクト指向なんて、初心者のうちから叩き込まれても何が嬉しいのか分からないんだよ。
だから今はあっさり流して、いつかプログラムが自分でも結構かけるようになった日に見返して、
なるほど、そういう意味だったんだと気づけたらそれでいいのだけど。

※上級者の方へ: 以下、厳密でないのは分かっている。間違いの指摘や補足は、初心者を困らせないような前置きをしてから頼む。

君は、日付を扱いたい。
君が簡単に日付を扱えるように、Pythonの作者たちが日付を扱うための「型」としてdateを用意してくれている。
「データ型」と「型」は同じものと考えていい。

そして、date型を作るためにはどうすればいいか? datetime.dateを関数呼び出しのように使えばいい。
それが「見方を変えると、datetimeが持っているdateという関数のようにも解釈できます」の意味。

別に、makeDate()でもdateFactory()でも名前なんて何でもよかったんだけど、
Pythonでは、型の名前を関数呼び出しのようにすると型を作れる、というルールになっている。
(他にもそういうルールになってる言語も結構あるから、そこそこメジャーなルールと言えるけど)

date()を呼び出しのようにすると、Pythonでは、
1. date型を作り出す
2. date.__init__()って関数を、最初の引数に1で作り出した型、第二引数以降にdate()の引数を入れて呼び出す
ということが行われる。
ここで、date.__init__()関数は、dateを使うための準備をするための関数で「初期化メソッド」と呼ばれている。

ところで、dateがどういう風にできているのか、というのを見ると、
dateはこんな関数を持ってるよ、といった内容の「クラス定義」だけが書いてある。

実際に日付のデータを持っているのはdateそのものではなく、「date()で作り出したもの」のみ。
そういう「クラス定義」から作り出したものを「インスタンス」と呼んでおり、インスタンスが日付のデータを実際に持っている。
つまり、「クラス定義」という作り方マニュアルを使って、作り出した「実体」が「実際のデータ」を持っているインスタンス、ということだ。

……って、わっかんねーよなぁ。
576デフォルトの名無しさん:2010/07/05(月) 01:24:42
140字以内でお願いできますか
577デフォルトの名無しさん:2010/07/05(月) 02:06:04
その本は漏れも捨てたほうがいいと思うけど、それはさておき

>>572
datetimeはモジュールで、その中にはdateというクラスが入っている
クラスは「呼び出し可能」であり、関数のように呼び出すことができる
呼び出すことでクラスはインスタンスを生成して返す

下はdateクラスからインスタンスd1, d2を生成し、属性の参照とメソッド呼び出しをする例
>>> import datetime
>>> d1 = datetime.date(1945, 8, 15)
>>> d2 = datetime.date(2000, 1, 31)
>>> d1.year, d2.year
(1945, 2000)
>>> d1.isoformat(), d2.isoformat()
('1945-08-15', '2000-01-31')

初期化メソッド(たぶん__init__のこと)については自分でクラス定義するようになったらわかるよ
578デフォルトの名無しさん:2010/07/05(月) 02:10:57
とりあえずプログラムを書け。小難しいことは後で必要があったら考えろ
579572:2010/07/05(月) 02:20:25
>>575,577
本当に本当にありがとうございます!!!
クラスやinitなどまだ勉強していない部分なので詳細は理解できませんが、中で何をやっているのか仕組みは分かってきました。
明日早いのに感動して色々調べてたらこんな時間に・・
入門用の本はやさしい書き方なのですが、自分のように論理的に納得できないと前に進めないタイプは
ちょっと難しくても詳しく書いてある本の方がいい気がしてきました。

580デフォルトの名無しさん:2010/07/05(月) 02:23:01
何のためにコンストラクタが一つと決まってるのか分からん。Javaはいくつもできるじゃん
581デフォルトの名無しさん:2010/07/05(月) 02:54:46
>>580
理由1(実装による理由)
Pythonでは名前空間がname manglingもしない単純な辞書になってるから、それをしようと思ったらすごく面倒になるし、
関数の引数に型をつけないから、引数の数でしか曖昧性を排除する手段がない。
けど、引数の数だけでいいんだったら、可変数引数をとればいいだけのこと。

理由2(ややPython信者めいた理由)
そもそもコンストラクタを複数作る必要はない。
どうせどれも似たような処理だったり、似てはいなくても共通部分が多く存在することは多い。
C++やJavaで、別のコンストラクタを呼び出すだけのコンストラクタを作ったことがある人も多いのでは?

もともとコンストラクタ(に限らず、同名の関数)を複数作らなければならないのは、
型に縛りがあることや、可変長引数が扱いにくい/扱えないことにあるので、
それが可能なPythonには、コンストラクタ(や関数)をいくつも作る必要がない。
582デフォルトの名無しさん:2010/07/05(月) 03:22:04
俺もCを学校で習った程度の者なんだけど
>>572の"初期化メソッド"ってつまり、コンストラクタの事?
583デフォルトの名無しさん:2010/07/05(月) 03:27:02
そう取るのが妥当じゃね?
コンストラクタに複雑な引数渡すくらいならclassmethodからインスタンス返した方がいいよ
win32apiみたいなのはごめんだ
584デフォルトの名無しさん:2010/07/05(月) 12:39:00
いわゆるファクトリ関数だな
585デフォルトの名無しさん:2010/07/07(水) 11:34:21
最適化アルゴリズムをpythonで組んでるのですが
10000回反復し、10〜100回くり返し試行するため
実行時間が数時間かかります
無駄な処理を省き8時間かかっていたものを4,5時間までに短縮できましたが
まだまだ遅すぎます。
そこでcythonなどを使おうと調べてるのですが、
解説サイトが少なく(英語読めませんごめんなさい)、使い方がほとんどわかりません
わかりやすい解説サイトもしくは使い方を教えてください。
まずは、簡単なやつから作ろうと思ってます。
その次の段階としてルーレット選択は全てcythonなどで実行できるようにしたいです。
ちなみにpython3使っていて、2.xにする気はほとんどないです。
586デフォルトの名無しさん:2010/07/07(水) 12:21:42
>>585
そのルーレット選択とかいう、Cythonで書きたいコードの元になるPythonコードを貼って。

コードを一切見せずに日本語でやりたいことだけ言われても、どう返していいかわからない。
587デフォルトの名無しさん:2010/07/07(水) 17:11:22
>>586
# 次の都市決定
def next_city(self,tau,eta):
""" 評価値計算 """
val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
s = sum(val_L) # 評価値の合計
""" 評価値が0の時 """
if not s: # 評価値の合計が0なら
val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
s = sum(val_L) # 評価値の合計更新
""" 相対値 """
val_L = [(i/s) for i in val_L] # 相対的な評価値
#s = sum(val_L) # 評価値の合計更新

""" ルーレット選択 """
tmp_sum = 0 # 合計
val_prob_L = [] # 評価値の確率リスト
for val in val_L: # 評価値リスト
tmp_sum += val # 評価値加算
#tmp_sum += val/s # 評価値加算
val_prob_L.append(tmp_sum) # 評価値確率リスト作成

self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市

とりあえずはこの部分をcythonで書きたいです
tau,eta は、n*nの二次元リストです。 今、nは51です。
self.pre:現在の場所,omega未訪問の場所
eta:現在地と未訪問の場所との距離(の逆数)
あとわかりづらい部分あったら言ってください

基本的に独学なので変なコードですいません
コメントは自分でわかりやすいように書いてあるやつなので表現が間違ってることもあります
588デフォルトの名無しさん:2010/07/07(水) 17:13:54
インデント…

  # 次の都市決定
  def next_city(self,tau,eta):
    """ 評価値計算 """
    val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
    s = sum(val_L) # 評価値の合計
    """ 評価値が0の時 """
    if not s: # 評価値の合計が0なら
      val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
      s = sum(val_L) # 評価値の合計更新
    """ 相対値 """
    val_L = [(i/s) for i in val_L] # 相対的な評価値
    #s = sum(val_L) # 評価値の合計更新

    """ ルーレット選択 """
    tmp_sum = 0 # 評価値の合計
    val_prob_L = [] # 評価値の確率リスト
    for val in val_L: # 評価値リスト
      tmp_sum += val # 評価値加算
      #tmp_sum += val/s # 評価値加算
      val_prob_L.append(tmp_sum) # 評価値確率リスト作成

    self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市
589デフォルトの名無しさん:2010/07/07(水) 17:46:06
糞どうでもいいけど、Cythonってなんて発音すんの?
590デフォルトの名無しさん:2010/07/07(水) 17:50:41
サイソンでしょ
591デフォルトの名無しさん:2010/07/07(水) 17:53:48
アメリカ:サイソン
イギリス:シーソン
ロシア:スサン
ドイツ:サイスン
イタリア:シッスナ
フランス:スーさん
中国:シェンシゥン
韓国:サアソン
日本:なんて読むの?
592デフォルトの名無しさん:2010/07/07(水) 18:31:22
カイソン
593デフォルトの名無しさん:2010/07/07(水) 21:46:26
http://docs.cython.org/src/quickstart/build.html
英語わからないっつってもこれくらいならなんとかなるんじゃないの?
594デフォルトの名無しさん:2010/07/07(水) 22:02:01
ちぃちぃょん
595デフォルトの名無しさん:2010/07/08(木) 00:01:16
糞どうでもいいけど、数あるプログラミング言語がある中で、

Pythonを選んだ理由を教えてください。
596デフォルトの名無しさん:2010/07/08(木) 00:03:35
名前がかわいい
597デフォルトの名無しさん:2010/07/08(木) 00:06:22
Guidoさんが好みのタイプなので
598デフォルトの名無しさん:2010/07/08(木) 00:13:29
括弧が少ないから
599デフォルトの名無しさん:2010/07/08(木) 00:15:23
2タブが気に食わなかったから
600デフォルトの名無しさん:2010/07/08(木) 00:18:19
$があまり出てこないから
601デフォルトの名無しさん:2010/07/08(木) 00:19:39
インストールとかモジュールの追加が楽だから
602デフォルトの名無しさん:2010/07/08(木) 01:29:25
Perlが嫌いだったから
603デフォルトの名無しさん:2010/07/08(木) 01:40:18
インデント強要ウザいとかいうバカがいないから
604デフォルトの名無しさん:2010/07/08(木) 03:36:56
hello.pyx
def say_hello_to(name):
  print("Hello %s!" % name)

C:\Users\test\>python C:\Python31\Scripts\cython.py hello.pyx

Error converting Pyrex file to C:
------------------------------------------------------------
...
def say_hello_to(name):
^
------------------------------------------------------------

C:\Users\test\hello.pyx:1:23: Unrecognized character

こんなエラーが出るんですがどうしたらいいですか?
605デフォルトの名無しさん:2010/07/08(木) 07:54:04
>>604
BOM付きUTF-8で書いてるんじゃない?
606デフォルトの名無しさん:2010/07/08(木) 10:28:55
>>605
ありがとうございます
どこで、BOM付きUTF-8に設定しているのかわからずに、
とりあえず、適当にエンコードしてみたら、

UTF-8 - Win(CR +LF)  にしたら、同じエラー
UTF-8 - Unix(LF)    にしたら通りました。

で新たなエラーが

thon setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
building 'hello' extension
error: Unable to find vcvarsall.bat

調べた結果
http://pythonlife.seesaa.net/archives/200909-1.html
>MSVCかMinGWまたはCygwin上のgccが必要となる。
とあり、MinGWは入っているので、これを利用し、

>後で判ったことだが、PythonでMinGWをdefaultで使いInstallする場合には、Python26/Lib/distutilsに
>次の内容distutils.cfgとして作成しておくと良いそうだ。今後は概ね「setup.py install」だけで大丈夫かもしれない。
>[build]
>compiler=mingw32
Python31/Lib/distutils/distutils.cfgを追加し、エラーもなくコンパイル出来ました。
import helloとし、実行した結果なんとかできました。

あとは、setup.pyの書き方がいまいち理解してないので、もう少し勉強してみます。
607デフォルトの名無しさん:2010/07/08(木) 10:58:54
まずBOM有無が決められるエディタを探すのが先じゃないかな?
608デフォルトの名無しさん:2010/07/08(木) 11:31:25
tmp.py
----
import hello
----

C:\Users\test>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 1, in <module>
import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte
対話モードだと出来るのですが、テキストで.pyを作成して実行すると上記のエラーが起きます
これは何が問題になっているのでしょうか?

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> hello.say_hello_to()
Hello!
>>>
609デフォルトの名無しさん:2010/07/08(木) 12:03:22
>>607
emacs23使ってます
.emacs.elを書き換えて
デフォルト保存をutf-8から,utf-8-auto-unixにしたらコンパイルは問題なくなりました
610デフォルトの名無しさん:2010/07/08(木) 20:53:18
>595
マジレスすると、numpyとmatplotlibが使いたかった

そんだけ
611デフォルトの名無しさん:2010/07/09(金) 01:57:53
>>608
エラーメッセージはちゃんと読んだ?
612デフォルトの名無しさん:2010/07/09(金) 13:00:11
cursesでstdscrの画面右下(24 x 80のコンソールなら23, 79)に書き込もうとすると
ERRが返ってくるんだけど、うちだけ?

import curses
stdscr = curses.initscr()
maxy, maxx = stdscr.getmaxyx()
stdscr.addch(maxy - 1, maxx - 1, 'A')
curses.endwin()

File "bugtest.py", line 4, in <module>
stdscr.addch(maxy - 1, maxx - 1, 'A')
_curses.error: addch() returned ERR

stdscr.addstr()でも同じ。

Cからだといけるんだけど、Pythonで回避法ってある?
Python 2.5.1と2.6.1で確認済。Macです。
613デフォルトの名無しさん:2010/07/09(金) 14:31:15
うちもなる。
Cの方は単に返り値を無視してるだけでは?
scrollokとかするとエラーでないっぽい。
614デフォルトの名無しさん:2010/07/09(金) 14:45:27
Cでは確かに返り値をチェックしてない。
try:〜except: passでとりあえず回避。Thx。
615デフォルトの名無しさん:2010/07/10(土) 01:09:38
>>611
unicodeデコードエラー
解読出来ませんでした。

どうやったら直るのでしょうか・・・・?
文字コードをいくつか変えて実行してもダメで、どうすればいいかわからないです。
616デフォルトの名無しさん:2010/07/10(土) 01:14:06
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

要点は
utf8' codec can't decode byte 0x8d

unexpected code byte
617名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:34:54
対話モードで、
>>> repr(open('tmp.py', 'rb').read())
を実行してみて。
618名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:36:35
window.pyという名前で保存したのに、ダブルクリックで起動できません
何が原因でしょうか?
619名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:39:49
>>618
コマンドプロンプトから起動してね
620名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:40:50
>>619
それしかないんでしょうか
621名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:45:18
>>620
というか起動はしてるんだけど
処理を終えたかエラーで止まったかでプロンプトが閉じちゃってるんだと思うよ

これ以上はwindow.pyの内容と何がしたいのか(どういう結果がほしいのか)が
わからないとなんともいえない
622名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:46:47
>>621
なるほど、解決しました
623名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:55:07
お礼は?
624名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:24:47
三行以上で?
625名無しさん@そうだ選挙に行こう:2010/07/11(日) 01:26:35
>>617
C:\Users\test>python tmp.py
Traceback (most recent call last):
 File "tmp.py", line 1, in <module>
  import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] onwin32
Type "help", "copyright", "credits" or "license" for more information.
>>> #utf-8 Win
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\r\\nhello.say_hello_to()\\r\\n'"
>>> #utf-8 Unix
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\nhello.say_hello_to()\\n'"
>>>

でした。

>>616
>UnicodeDecodeError: 'utf8'コーデックは位置22でバイト0x8dを解読できません: 予期していなかったコードバイト

>'utf8'コーデックはバイト0x8dを解読できません。
0x8d がどれを指してるのかが・・・
>予期していなかったコードバイト
0x8dがダメなんですよね?
utf8自体がダメなんですかね

飯食って、グレープフルーツゼリー作って、そのあと意識があれば調べてみます
626名無しさん@そうだ選挙に行こう:2010/07/11(日) 02:18:16
なんだ中学生か
627625:2010/07/11(日) 02:20:59
う〜ん・・・
結局よくわからないです

hello.pydがいけないんですか?
この中なら\x8d は何回か出てきてます
でもそしたら、対話モードでもimport出来ないはず...?

今度こそ飯を
628名無しさん@そうだ選挙に行こう:2010/07/11(日) 02:33:41
バイト数が問題なんですか><
629名無しさん@そうだ選挙に行こう:2010/07/11(日) 04:30:08
まずBOM有無が決められるエディタを探すのが先じゃないかな?
630名無しさん@そうだ選挙に行こう:2010/07/11(日) 04:42:33
>>629
そのためにpyscripter入れたけどダメでした
631名無しさん@そうだ選挙に行こう:2010/07/11(日) 04:49:59
馬鹿には無理
632名無しさん@そうだ選挙に行こう:2010/07/11(日) 07:45:36
notepad++オヌヌメ
633名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:23:34
結局どうしたいいんですか?
634名無しさん@そうだ選挙に行こう:2010/07/11(日) 10:08:13
>>627
pycじゃなくてpyd?
よくわかんないから関連ファイル全部まとめてzipでうpしてくれると話が早い
635名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:46:52
>>627
対話モードと直接実行時でロードしている hello モジュールが違ってる気がする。

tmp.py で
try:
  import hello
except UnicodeDecodeError as e:
  print(repr(e.object), (e.start, e.end))
import os, imp
print(os.path.abspath(imp.find_module("hello")[1]))
636名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:47:38
BOMって関係あんの?
637名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:51:54
>>604 の Unrecognized character のエラーは codecs.open 使ってるのに
'\r' を読み取る事を考慮していない Cython のバグ
638名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:59:03
俺が体験してきた中で
一番最初に出会って、頻繁に出るのはBOM関連のエラーだな
たまにBOM付きじゃないとダメってのがあるけど基本なしですれば問題ない
まずBOM無しUTF-8を既定にできるエディタをさがすべき
639名無しさん@そうだ選挙に行こう:2010/07/11(日) 13:38:55
>>638
で、そのBOM関連エラーでどうやって0x8dが出るんよ。
640名無しさん@そうだ選挙に行こう:2010/07/11(日) 13:54:11
ソースコードエンコーディング絡みなら SyntaxError が出るはず
641名無しさん@そうだ選挙に行こう:2010/07/11(日) 14:03:33
こんなprintの段階でググる能力すらないのが終わってる
どうしても答えが欲しいなら別言語に移ったほうがよさそう
恐らく、このまま甘やかすとこのスレに日記帳のように書き込まれる
642名無しさん@そうだ選挙に行こう:2010/07/11(日) 14:20:06
cythonのことよく知らなくて変なレスつけちゃった
>>634はスルーしてね

>>637のとおり、CPythonでコード書くときには\rを落としとけってことなのね

http://groups.google.com/group/pinoy-python-users/browse_thread/thread/f558512bdf42134b
> Just remember to replace CR/LF endings in Windows to LF. Use Notepad+
> +'s Edit > EOL Conversion to convert line-endings or else Cython will
> argue about invalid characters when compiling.
643名無しさん@そうだ選挙に行こう:2010/07/11(日) 14:21:01
訂正。CPythonじゃなくてcython
644名無しさん@そうだ選挙に行こう:2010/07/11(日) 14:57:16
PyQt4を試してるんですが
Qt4(C++)の方でQHogehogeクラスを継承して定義したQHagehageクラスを
PyQt4から使用するにはどのような使い方をすればよいのでしょうか?
645名無しさん@そうだ選挙に行こう:2010/07/11(日) 14:59:19
PyQTは糞なので
WxPythonかGTK使ってください。
646名無しさん@そうだ選挙に行こう:2010/07/11(日) 15:09:31
おっPyQT
647名無しさん@そうだ選挙に行こう:2010/07/11(日) 15:17:53
おっPyQTとはどういう意味ですか?
648名無しさん@そうだ選挙に行こう:2010/07/11(日) 15:30:45
QHagehageをラップしたC拡張ライブラリを作らないと駄目じゃないの?
649648:2010/07/11(日) 15:32:22
C拡張ライブラリ => C拡張モジュール
650名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:03:43
俺も>>644知りたいわ。
651名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:21:16
sip使って自分で拡張モジュール作る。
652625:2010/07/11(日) 21:38:48
>>635
ありがとうございます

C:\Users\test>python tmp.py
b'C:\\Users\\test\\hello.pyd' (22, 23)
C:\Users\test\hello.pyd
でした
653名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:25:08
Python3とPython2が混じってるのかな?
Python2はインストールしていない?
654デフォルトの名無しさん:2010/07/11(日) 23:50:12
ウィンドウズのコマンドプロンプトだと↑キーを押すと以前入力した文字が入力されますが
Python Shellで、同じような事は出来ないでしょうか?
655デフォルトの名無しさん:2010/07/11(日) 23:56:47
漏れも知りたい鯛
656デフォルトの名無しさん:2010/07/12(月) 00:06:25
IDLE だったら Options -> Keys の history-next, history-previous で Alt+n, Alt+p じゃない
657デフォルトの名無しさん:2010/07/12(月) 00:07:19
つrlwrap
658デフォルトの名無しさん:2010/07/12(月) 00:13:30
>>656,657
ありがとうございます!
659デフォルトの名無しさん:2010/07/12(月) 00:57:43
>>654
ipython便利だよ。windowsだとpyreadlineといっしょにいれるとよろし。
660デフォルトの名無しさん:2010/07/12(月) 01:05:00
661デフォルトの名無しさん:2010/07/12(月) 01:18:27
ズバリtwitterクライアント作ろうと思ったら、何が必要ですか?

右も左も分からない初心者です
662デフォルトの名無しさん:2010/07/12(月) 01:29:26
189 デフォルトの名無しさん [] 2010/07/12(月) 00:13:57 ID: Be:
    Twitterクライアント
    クリップボード監視に向いてる言語は何ですか?
663デフォルトの名無しさん:2010/07/12(月) 01:57:28
お前の頭骨に入ってる塊より百段上等な脳みそ
664デフォルトの名無しさん:2010/07/12(月) 02:14:34
665デフォルトの名無しさん:2010/07/12(月) 03:22:15
Python3.12 の Windows 版で日本語を含むフォルダ内のC拡張モジュールを
インポートするスクリプトを実行するとUnicodeDecodeErrorが発生するみたい。
おそらく Python3 のバグ。
(importdl.c の _PyImport_LoadDynamicModule => _PyImport_FindExtension => PyDict_GetItemString等
=> ... => PyUnicode_DecodeUTF8 の流れで cp932 のバイト列が utf8 で変換されてエラーになる)

再現例:
D:/ほげほげ/winsound.pyd, D:/ほげほげ/a.py の状態で a.py を実行する。
winsound.pyd は Python31/DLLs のをコピー a.py の中身は import winsound のみ
666デフォルトの名無しさん:2010/07/12(月) 03:25:36
>>625 のエラーはこのせいだと思う
667デフォルトの名無しさん:2010/07/12(月) 05:40:41
>>653
混じってます
Vista HomeBasicSP1とwindows7の2台で利用していますが
VistaはCygwinの中にPython2.4と2.5が入っています。
cygwinは普段利用していなく、コマンドプロンプトを利用しています。
windows7では、最近2.7と2.6を入れました。
このエラーが起きてから入れたような気もします。定かではないですが・・・

Vista
C:\Python31 , C:\cygwin\lib\Python2.4 , C:\cygwin\lib\Python2.5
windows7
C:\Python31 , C:\Python27 , C:\Python26
こんな感じの場所にいます
668デフォルトの名無しさん:2010/07/12(月) 06:08:14
>>665
ありがとうございます
直りました

>>653
色々教えていただきありがとうございます
時間を取らせてしまって、ごめんなさい。
ここにレスするときに、ディレクトリ名が乗せられなくて、勝手に手で消してからレスしていました。
そのディレクトリ名の中に日本語が含まれていました。
申し訳ありません
一言、消していることを明記すべきでした。
b'C:\\Uers\\test\\******\\\x8d(ry
ごめんなさいごめんなさい....orz
669デフォルトの名無しさん:2010/07/12(月) 06:50:27
センスないな
670デフォルトの名無しさん:2010/07/14(水) 17:34:50
クラスにメソッドを後付けすることはできますか?
継承せずに、メソッドを定義したいのですが
671デフォルトの名無しさん:2010/07/14(水) 20:06:45
>>670
できます。
class Foo(object):
    pass
def _bar(self):
    pass
Foo.bar = _bar
672デフォルトの名無しさん:2010/07/16(金) 01:05:22
>>671
そんな簡単にできるのですね
ありがとうございました
673デフォルトの名無しさん:2010/07/16(金) 02:18:16
けどbuiltinなクラスには後付けできないという...
これって、できないようにする積極的な理由あるの?
674デフォルトの名無しさん:2010/07/16(金) 02:21:16
継承すれば済む話だろ
675デフォルトの名無しさん:2010/07/16(金) 02:29:31
builtin typeに追加できてもカオスになるだけだと思うわ
676デフォルトの名無しさん:2010/07/16(金) 02:33:04
それどこの Ruby on Rails www
677デフォルトの名無しさん:2010/07/16(金) 02:52:55
>>673
変更不可能にすることで、メモリ消費量を削減したり、呼び出しを高速化したりできる。
基本的に変更可能な属性は dict 型のオブジェクトを使って管理されているので、
その呼び出しはハッシュテーブルからの検索とかオーバーヘッドが少し大きい。

あと、基本型を弄るとどこに副作用が起こるかわからないという理由もあるな。
基本的に直接弄るんじゃなくて継承しろという方針。
678デフォルトの名無しさん:2010/07/16(金) 03:29:16
>>677
なんだ、実装上の都合なのか。

Pythonは理想追い求めるより現実的な落としどころ見つける言語だってのは知ってるけど、
それでも一貫性のなさを感じる。
679デフォルトの名無しさん:2010/07/16(金) 03:35:59
読解力のなさに絶望した
680デフォルトの名無しさん:2010/07/16(金) 05:00:38
builtinクラスに後付けしたいケースってありますか?
ちょっと思いつかないな
681デフォルトの名無しさん:2010/07/16(金) 07:36:12
list.joinしたいんだろ
682デフォルトの名無しさん:2010/07/16(金) 23:26:13
file.foo = 1 はできないのに、
StringIO.StringIO.foo = 1 ができる合理的理由が見当たらない。
683デフォルトの名無しさん:2010/07/16(金) 23:44:22
684デフォルトの名無しさん:2010/07/17(土) 00:14:02
>>682
お前には cStringIO をやる
685デフォルトの名無しさん:2010/07/17(土) 14:34:23
__slot__
686デフォルトの名無しさん:2010/07/18(日) 03:35:53
aiueo = input()
import aiueo

みたいに読み込むモジュールを入力して与えることって出来るの?
687デフォルトの名無しさん:2010/07/18(日) 04:01:21
Yes, we can.
688デフォルトの名無しさん:2010/07/18(日) 05:05:59
>>686
__import__()
689デフォルトの名無しさん:2010/07/18(日) 11:49:25
imp モジュールもあるよ
690デフォルトの名無しさん:2010/07/19(月) 04:15:36
質問です
dictが入れ子になってるdictの構造だけをコピーしたいのですが
copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

In [2]: a = {"a":{"b":"con_b","c":"con_c"}}
In [3]: b = a.copy()
In [4]: a
Out[4]: {'a': {'b': 'con_b', 'c': 'con_c'}}
In [5]: b["a"].update({"b":"hoge"})
In [6]: b
Out[6]: {'a': {'b': 'hoge', 'c': 'con_c'}}
In [7]: a
Out[7]: {'a': {'b': 'hoge', 'c': 'con_c'}}

これを a["a"]["b"] == "con_b" としたいのですが
updateというアプローチは間違っているのでしょうか
691デフォルトの名無しさん:2010/07/19(月) 04:37:26
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = a.copy()
>>> b["a"].update({"b":"hoge"})
>>> a
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>>
692デフォルトの名無しさん:2010/07/19(月) 04:40:31
>>> import copy
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = copy.deepcopy(a)
>>> b
{'a': {'c': 'con_c', 'b': 'con_b'}}
>>> b["a"].update({"b":"hoge"})
>>> b
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>> a
{'a': {'c': 'con_c', 'b': 'con_b'}}
693デフォルトの名無しさん:2010/07/19(月) 05:07:31
>>692
おー、ありがとうございます
こういうケースはcopy.deepcopy()しないといけないんですね
694デフォルトの名無しさん:2010/07/19(月) 05:12:43
>dictが入れ子になってるdictの構造だけをコピーしたいのですが
>copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

質問の仕方が変だ
695デフォルトの名無しさん:2010/07/19(月) 10:08:58
>>693
浅いコピーってのは、
b = {}
for key in a:
  b[key] = a[key]
と同じだから、この場合
b["a"] = a["a"]
ってしたことになる。ここで、 a["a"]は辞書型なのでmutable。

浅いコピーでも完全にコピーされるのは、
・要素が全部immutable(int, float, str, tupleなど)
・要素の要素、要素の要素の要素、...が全部immutable
のときのみ。
もちろん、完全にコピーされないことを知った上で大丈夫だと分かっててコピーするのはOK

要素の要素がmutableで浅いコピーがうまくいかない例:
a=(1,(2,[3,4]))
b=a
b[1][1][1]=0
print b
# ==> (1, (2, [3, 0]))
print a
# ==> (1, (2, [3, 0]))
696デフォルトの名無しさん:2010/07/19(月) 12:32:02
pythonの初心者参考本を見て、elseを使おうとしたのですが
SyntaxError: invalid syntax
というエラーが出てしまいます。何か間違ってるところがあったら教えてください。コードはこんな感じです。

color = '緑'
score = 20
if color == '赤':
bonus = 0
  
ここでelseを入れるとエラーが出ます。あとインデント幅も妙です。
参考本ので説明に使われているpythonのバージョンと今使ってるバージョンが違うので
書き方に違いがあるのかと思ってぐぐってみたんですが分かりませんでしたorz
697デフォルトの名無しさん:2010/07/19(月) 14:26:45
>>696
こんな感じで普通に動くと思うけど。
インデントは全角スペースにしてるから気をつけてね

color = '緑'
score = 20
if color == '赤':
 bonus = 0
else:
 bonus = 20
print bonus


elseの後に:を入れ忘れているんじゃないかと予想。
698デフォルトの名無しさん:2010/07/19(月) 16:56:13
>>697
if color == '赤'
bonus = 0
この後改行するとbonusの"b"と同じ列から入力するようになっていてelseを入れてみると
   bonus = 0
    else:

SyntaxError: invalid syntax
というエラーが出てしまいます。丸々コピーしてみても駄目でしたすみません。
何かすごい根本的な問題のような気がするのでこのままスルーして頂いても結構です。ありがとうございました。
699デフォルトの名無しさん:2010/07/19(月) 17:10:01
>>698
elseを打つときはデデント(インデントの反対)して
ifと同じ桁から始めなきゃだめだよ

あともし統合環境使ってるのであればPythonに慣れるまでは凍結して
シンプルなテキストエディタとコンソール(コマンドプロンプト)を使ったほうがいい
700デフォルトの名無しさん:2010/07/19(月) 17:53:47
>>699
デデントしたらできました!ありがとうございます。
701デフォルトの名無しさん:2010/07/19(月) 20:31:18
なんだ自演か
702デフォルトの名無しさん:2010/07/20(火) 03:25:51
なんだかうまい方法を思いつかない

before =[
{"id":"0","aaa":"fdafdsadafdas"},
{"id":"0","bbb":"dafdgdfagdfsg"},
{"id":"0","ccc":"dafdgdfagdfsg"},
{"id":"1","aaa":"gdfagdfsgdsaf"},
{"id":"1","bbb":"dgfagdsdaffsg"},
{"id":"1","ccc":"dadfgdfddfasg"},
{"id":"1","ddd":"dadfgdfddfasg"}
]

という要素として辞書を持ったリストを

after =[ {"id","0","aaa":"fdafdsadafdas","bbb":"dafdgdfagdfsg","ccc":"dafdgdfagdfsg"}, {"id":"1","aaa":"gdfagdfsgdsaf","bbb":"dgfagdsdaffsg","ccc":"dadfgdfddfasg","ddd":"dadfgdfddfasg"}
]

のように"id"を共通のキーにしてまとめたい
どのようにすればいいだろうか
703デフォルトの名無しさん:2010/07/20(火) 03:50:43
[dict(reduce(operator.add, map(dict.items, b))) for a, b in itertools.groupby(before, operator.itemgetter("id"))]
704デフォルトの名無しさん:2010/07/20(火) 05:44:08
>>703
動きました。いいワンライナーですね!
itertools と reduce、 まだ怖くて使ったことがないです…
自分も使いこなせるようになろう
705デフォルトの名無しさん:2010/07/20(火) 07:22:19
ワンライナーにおしこめないで判りやすくするにはこんな感じかな。
t = defaultdict(dict)
for item in before:
    t[item['id']].update(item)
after = t.values()
706デフォルトの名無しさん:2010/07/21(水) 05:11:58
>>704
>怖くて

どういう意味?
707デフォルトの名無しさん:2010/07/21(水) 10:29:25
でもそういう便利機能を使いこなしちゃうとあとで読みにくかったりするわな
708デフォルトの名無しさん:2010/07/21(水) 23:16:18
>>688
出来ましたありがとうございます。
709デフォルトの名無しさん:2010/07/22(木) 02:24:28
コンパイル済ヘルプ chm (win) 形式の日本語言語リファレンスの
新しいのはないでしょうか。
2.5 まではあったんですが。
http://www.python.jp/pub/doc_jp/
710デフォルトの名無しさん:2010/07/23(金) 16:55:06
tkinterの良い勉強サイトや本ってない?
可能ならば3に対応してる奴で、英語か日本語のもの
711デフォルトの名無しさん:2010/07/23(金) 17:01:14
あるよどっかに
712デフォルトの名無しさん:2010/07/23(金) 17:29:23
pythonを勉強してたんだが全く意味がわからんのでまずはプログラムのイロハを学びたいと思います

LINUXでC言語でも勉強したいと思います
713デフォルトの名無しさん:2010/07/23(金) 17:32:24
こう言っては何ですがプログラミング自体を諦めたほうがいいのではないでしょうか
714デフォルトの名無しさん:2010/07/23(金) 17:38:39
pythonで学ぶプログラム作法おすすめ
715デフォルトの名無しさん:2010/07/23(金) 17:51:31
どうでもいいけど、このスレに居る奴って英語読めなさそうだな
716デフォルトの名無しさん:2010/07/23(金) 17:53:37
英語読めれば>>714もただで読めるのにね
717デフォルトの名無しさん:2010/07/25(日) 17:16:57
#!/usr/bin/python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
 print 'java-ja great!!!'
718デフォルトの名無しさん:2010/07/25(日) 17:48:11
>>717
特定されました
719デフォルトの名無しさん:2010/07/25(日) 19:00:33
classを作って、アトリビュートaを設定してるつもりなのですが
インポートしてaを開こうとするとそんなアトリビュート無いと言われます
何が間違っているのでしょうか
http://www.dotup.org/uploda/www.dotup.org1051891.jpg.html
720デフォルトの名無しさん:2010/07/25(日) 19:14:35
>>719
1. class は import しない。 import test としたら、 class test と全く別の test モジュールが import され、 test クラスは消え去る。
2. self.a = 0 では、クラスではなく、クラスのインスタンスに属性を追加しているので、インスタンスを作らないと a は見えない。

class test:
    def __init__(self):
        self.a = 0

t = test()
t.a
721デフォルトの名無しさん:2010/07/25(日) 19:15:24
>>719
importはモジュールを読み込み、初期化する文。
classとは関係ない。

その例だと、testという名前でクラスを定義した後に、
testというモジュールをimportしている。
722デフォルトの名無しさん:2010/07/25(日) 19:20:46
>>720,721
なるほど!ありがとうございます。

723デフォルトの名無しさん:2010/07/26(月) 16:36:07
askopenfilenameって3.0以降でどう書けばいいの?
tkFileDialogのimportの変更点も分かってないから誰か解説してくれ
724デフォルトの名無しさん:2010/07/26(月) 17:09:13
2to3.py
725デフォルトの名無しさん:2010/07/26(月) 17:11:10
neetossan.py
726デフォルトの名無しさん:2010/07/26(月) 18:17:58
助かった、tkinterも変えてくれるのね
アスキーコード云々もsitecustomize.pyに2行足しただけですんなり行った
727デフォルトの名無しさん:2010/07/27(火) 00:34:17
__init__
とか__がやたら目につくのはなぜ?
気持ち悪いんだけど
728デフォルトの名無しさん:2010/07/27(火) 01:51:47
誰かいる??
729デフォルトの名無しさん:2010/07/27(火) 02:00:45
(゚Д゚≡゚д゚) 今ぱいスレには俺様しかいない!
730デフォルトの名無しさん:2010/07/27(火) 02:00:51
居ないけど何よ?
731デフォルトの名無しさん:2010/07/27(火) 02:03:38
pythonでmsecまでを表示したいんですが、
何か良い方法は無いでしょうか??

例えば

2:00:44.009727 の時だと

7244.010 みたいなかんじです。

マイクロsecをとって//1000すると、9 とかになるので、
マイクロsecから丸める方法でも3桁にしたいです・・

お知恵をお貸し下さい。
732デフォルトの名無しさん:2010/07/27(火) 02:07:07
俺じゃ答えはわからないけど一緒に考えることなら出来るよたぶん
733デフォルトの名無しさん:2010/07/27(火) 02:07:22
>>731
>>> sec = 12345.12345
>>> print "%.3f" % (sec,)
12345.123
734デフォルトの名無しさん:2010/07/27(火) 02:09:02
python] ミリ秒まで表示させる
■[python] ミリ秒まで表示させる 00:35 ミリ秒まで表示させる -
With skill and creativeness を含むブックマーク はてなブックマーク - ミリ秒まで表示させる - With skill and creativeness ミリ秒まで表示させる - With skill and creativeness のブックマークコメントCommentsAdd Star

参考URL

import datetime
now = datetime.datetime.now()
print now.strftime("%Y%m%d%H%M%S.") + "%04d" % (now.microsecond // 1000)
→ '20081118003037.0479'

これは?
ttp://d.hatena.ne.jp/shohu33/20081117/1226936130
735デフォルトの名無しさん:2010/07/27(火) 02:11:21
ありがとうございます。

datetime.datetime.now()とかで、
秒換算して取得することって出来ますか?

それと、>>733を組み合わせると、完璧の予感!
736デフォルトの名無しさん:2010/07/27(火) 02:15:28
>>> datetime.datetime.now()
datetime.datetime(2010, 7, 27, 2, 14, 21, 705000)

日本語が理解できない
これで秒取って、足したり引いたりじゃだめなの?
737デフォルトの名無しさん:2010/07/27(火) 02:27:16

d = datetime.datetime.now()

sec = ((d.hour*60 + d.minute)*60 + d.second)

print sec
print "%.3d" % (d.microsecond // 1000)

数値型で sec.msec にするには、あと、どうしたらいいですか・・・
行き詰まってしまいました
738デフォルトの名無しさん:2010/07/27(火) 02:39:45
d = datetime.datetime.now()
sec = ((d.hour*60 + d.minute)*60 + d.second)
msec ="%.3d" % (d.microsecond // 1000)
print sec + float(msec)/1000
これでいいか。
739デフォルトの名無しさん:2010/08/01(日) 23:52:56
readで引数を細かくとったり、urllib.urlretrieveを使うことで
ダウンロードの進捗状況を知ることができるのは分かったのですが

アップロードの進行状況(POST)を知る方法は標準ライブラリでありませんか?
urllib2とかurllibを使って
740デフォルトの名無しさん:2010/08/02(月) 00:12:41
windowsでeasy installを使いたいのですが、
c:\Python25\Scriptディレクトリ自体がありません
どうしたらいいでしょうか
741デフォルトの名無しさん:2010/08/02(月) 00:19:55
>>740
なくてもインストールできるからさっさと入れればいいだろ
742デフォルトの名無しさん:2010/08/02(月) 00:26:52
は?
743デフォルトの名無しさん:2010/08/02(月) 00:29:38
>>739
その方法で本当にDL進捗状況がわかるのか気になる
socket使えばアップ・ダウン両方できる
744デフォルトの名無しさん:2010/08/02(月) 00:30:31
easy install自体が見あたらないのです
http://www.python.jp/Zope/download/pythoncore
ここのpython-2.5.2.msiを使用しました。
745デフォルトの名無しさん:2010/08/02(月) 00:42:46
>>744
そうじゃない
まずeazy_installをいれろよアホがっつってんだよカス
746デフォルトの名無しさん:2010/08/02(月) 00:45:18
えっ、easy installは最初から入ってるものではなかったのですか?
その方向で調べてみます
ありがとうございます。
747デフォルトの名無しさん:2010/08/02(月) 00:57:01
>>743
すいません後出となって申し訳ないのですが、ソケットを直接つかうの以外で
無いだろうかと探していました

748デフォルトの名無しさん:2010/08/02(月) 01:12:31
eazy_installをeazy_installでインストール出来ないのは大問題だな
749デフォルトの名無しさん:2010/08/02(月) 01:59:53
今はsetuptoolsじゃなくてdistributeだから気をつけなよ>easy_installの入手
750デフォルトの名無しさん:2010/08/02(月) 03:17:27
一度タイムゾーンを設定したら
以後、時刻関係の関数は一律そのタイムゾーンで値を返してくるようにしたいのですが
そういうことできますか?
751デフォルトの名無しさん:2010/08/02(月) 03:32:50
環境変数で TZ=hoge する
752デフォルトの名無しさん:2010/08/02(月) 20:46:35
'''
プログラム超初心者です
↓のようなことをするときにbreakは書いたほうがいいのでしょうか、、、
あともっとスマートに書ける方法があったら教えてください。

ユーザーから続けて数字の入力を受け付け
合計が100に近づくまでその数値を足し続けるプログラムを書きなさい
'''
hundred = 100
value = 0
def numint(x):
  while True:
    try:
     y = raw_input(x)
     z = int(y)
    return z
    #break ←ブレイクは書いたほうがいいのでしょうか?
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'

value += numint('数値を入力してください>> ')

while value < hundred:
  print value, u'まだ足りないみたいです'
  value += numint('もっと大きな数字を入力しましょう>> ')
print value, u'合計が100以上になりました'

753デフォルトの名無しさん:2010/08/02(月) 20:49:01
また突っ込み所満載のネタを・・・
754デフォルトの名無しさん:2010/08/02(月) 22:06:48
>> 752 です
http://www.python.jp/Zope/intro/instant_hacking_jp
プログラムの練習に↑のInstant hacking をしていたのですが
例外処理を加えようとして pylint が到達不能code を警告していたので
どうしたもんかなぁと思って書き込みしてみたところです

ぐぐったところ while True はあまり書かない方がいいみたいなので
他の手を使ってみます、、、

while True したら break を書くものとばかり思っていたので
頭が混乱してしまいました…
755デフォルトの名無しさん:2010/08/03(火) 00:26:47
昔PHPにループからreturnするとメモリリークするというバグがあった
756デフォルトの名無しさん:2010/08/03(火) 03:24:01
>>752
質問に答えるなら、returnの後の行はどうせ実行されないのだから、breakは不要。
けれどこれ、except節はtry節が終わった直後に置かないといけないからSyntaxError出ると思うよ。

そしてお説教。
> hundred = 100
こういう名前の付け方は意味が無い。
変数は、
・いちいち書くと長ったらしい/処理を分けたいから名前をつけたい
・今後変更される可能性に備えて、名前をつけておきたい
ときに使うものだから。仮に200に変更したとき、
hundred = 200
にするわけにはいかないでしょう。
これもあんまりいい名前じゃないけど、俺ならNにしちゃうかな。

numintの引数xも、一目でxが何か分からないから問題あり。

例外が出なかったときに処理したいのなら、Pythonでは例外の後のelse節でそれができる。

N = 100
value = 0
def numint(msg):
  while True:
    y = raw_input(msg)
    try:
     z = int(y)
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'
    else:
      return z
757デフォルトの名無しさん:2010/08/03(火) 07:03:55
>>756
ありがとうございます!!! めちゃくちゃスッキリしました!!
なぜかerrorを出さずに実行できてしまっていたのでどうしよう…ってなっていたところでした

みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

もっと基礎を勉強したほうがいいですねorz
多謝です!!
758デフォルトの名無しさん:2010/08/03(火) 10:08:33
>>757
>みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

そんなことが書いてあるの!?
酷い本だ。
759デフォルトの名無しさん:2010/08/03(火) 10:13:52
今までプログラムを触ったことがないならまずはC言語からの方がいいと思う、教材の良とか質とかもあるし。
オライリーのヘッドファーストシリーズお勧め
760デフォルトの名無しさん:2010/08/03(火) 10:15:59
handred = 100は教材以前の問題じゃないだろうか。
自分の子供に「息子」という名前を付けるのと同じだ。
761デフォルトの名無しさん:2010/08/03(火) 11:27:02
なんとかjr
762デフォルトの名無しさん:2010/08/03(火) 11:30:31
handredってなに、手が赤いの?
763デフォルトの名無しさん:2010/08/03(火) 12:40:08
>>762
半分ドレッドな臭い頭のひとのことです
764デフォルトの名無しさん:2010/08/03(火) 12:41:39
>>758
いえ、変数の名前のつけ方とかはみんなのPythonには書いてなかったので、、、
読んでみた感想は、なんとなくプログラムを大雑把に理解できる感じでした
ビット演算の項でつまずいてますけどorz

変数の名前にhundredを使ったのは私ですのでみんパイは悪くないです
図書館で借りたので文句のつけようがないです、、、

>> 759
「みるみるプログラミングがわかる本」掌田津耶乃
「 C言語プログラミング入門―C99対応―」田中敏幸
[改訂新版] これからはじめるプログラミング基礎の基礎]谷尻 かおり
あたりを図書館で借りて勉強しようと思います

「エキスパートPythonプログラミング 」Tarek Ziade
「Head First JavaScript」Michael Morrison
は買ってみます



765デフォルトの名無しさん:2010/08/03(火) 21:40:06
確かに
みんパイ読んだけどちんぷんかんぷんだった
で、Cの本を適当に読んだら非常に解りやすい
やっぱプログラム初心者にパイソンはむついのかなーと何気に感じた今日この頃
766デフォルトの名無しさん:2010/08/03(火) 21:43:43
みんなのPythonは前半は実践編が無いからな〜
767デフォルトの名無しさん:2010/08/03(火) 23:36:04
Webにあるチュートリアルじゃむずいの?
768デフォルトの名無しさん:2010/08/04(水) 00:24:30
数千円でプログラミングのエッセンスが身につくと思っているとかおめでたいな。
769デフォルトの名無しさん:2010/08/04(水) 00:28:01
6千ちょいだせばなんとか
http://www.amazon.co.jp/dp/0262062798/
770デフォルトの名無しさん:2010/08/04(水) 00:39:28
ビッド演算で躓く子が、ポインタを理解できるのかい?
771デフォルトの名無しさん:2010/08/04(水) 00:42:50
>>770
整数はbit幅が固定じゃないからcよりも理解しにくいんじゃない?
772デフォルトの名無しさん:2010/08/04(水) 00:58:45
>>770
ビッド演算とか言ってないからたぶん大丈夫だろう
773デフォルトの名無しさん:2010/08/04(水) 01:22:47
>>764
命名規約だけで大議論が起こるくらいにはネーミングは重要だよ。
Pythonの命名規約は「PEP8」でググれば出てくるから調べてみな。
774デフォルトの名無しさん:2010/08/04(水) 09:24:20
>>773
http://bitbucket.org/tavisrudd/pylint_etc_wrapper.py/src/tip/pylint_etc_wrapper.py
上のエラーチェックを使っているのですが、defaultにpep8を追加して使えるようにしました

「l」「0」「I」は使わない、関数名は小文字、classは先頭大文字などとても参考になります

ビット演算は否定のところでつまづいてます。
26(10) 11010(2) の否定は 100101(2) のはず?なのに
26 11010 -27 -11011
と出るので…考えれば考えるほどわからないorz
自分の書いたスクリプトが悪いのでしょうか…
スレ違いすいません、、、
775デフォルトの名無しさん:2010/08/04(水) 09:45:37
「2の補数」でぐぐれ

>>> ~26
-27

26(10) = 11010(2)
-27 = ~26(10) = 1111...(ここの1が論理的に無限に続く)...111100101(2)
これで 26 + (-27) = -1 になることを考えてみるとわかりやすい
111111 = -1
111110 = -2
111101 = -3
111100 = -4
...
100111 = -25
100110 = -26
100101 = -27
776デフォルトの名無しさん:2010/08/04(水) 15:58:27
>>775
ありがとうございます!! めちゃくちゃ助かりました!!
なんとなくですけど、理解できたような気がします!

~(not)はビットを反転させて、1の補数をとっているんですよね。
>>format(26, 'b')
11010
>> ~ 26
-27
>>format(-27, 'b')
-11011

単行演算子 - は2の補数をとるので、表示は1111..(32列)..1100101ではなく
-11011となっていたのですね!

この理解であっているでしょうか、、、
777デフォルトの名無しさん:2010/08/04(水) 16:46:19
血が牛
778デフォルトの名無しさん:2010/08/04(水) 18:41:38
>>776
format(n, 'b')はnを2進表記にした文字列を返すってだけだよ
整数の内部表現を返すわけではない
779デフォルトの名無しさん:2010/08/04(水) 19:00:07
一応補足しておくと b って意味は、
2進数表記の際に、頭につける 0b からきてる。
これは16進数の0xと一緒の意味。
format(num, 'b')は単純に
数字を変換、どんな物かというとb、bの意味は2進数。
780デフォルトの名無しさん:2010/08/04(水) 19:04:39
それは補足じゃなくて蛇足
781デフォルトの名無しさん:2010/08/04(水) 19:06:23
なんでbなんだ
782デフォルトの名無しさん:2010/08/04(水) 19:10:20
binary
783デフォルトの名無しさん:2010/08/04(水) 19:14:02
なんでxなんだ
784デフォルトの名無しさん:2010/08/04(水) 19:25:38
hexともしました
785デフォルトの名無しさん:2010/08/04(水) 23:23:55
つまり6進数か。
786デフォルトの名無しさん:2010/08/05(木) 01:01:11
2進数16進数はわかるけど8進数の存在意義がよくわからん.
言語によっては数値リテラルを0から始めると8進数として扱ったり
16進数で十分じゃん
787デフォルトの名無しさん:2010/08/05(木) 01:18:52
chmod 755
788786:2010/08/05(木) 03:25:08
そういえばそれは8進数だな

けどソースコードを書く上での存在意義がよくわからんのだよ>8進数
わざわざ8進数を記述する文法があるわけだから何かしら意義はあるのだろうけど
789デフォルトの名無しさん:2010/08/05(木) 03:31:47
分かった。16進だと記号が入ってウザいから
790デフォルトの名無しさん:2010/08/05(木) 03:46:54
10進数のつもりが8進数でした・・・になるより記号付きの方がいいと思うんだけど
791デフォルトの名無しさん:2010/08/05(木) 06:11:08
8進数は64bitと相性が良い
792デフォルトの名無しさん:2010/08/05(木) 06:14:00
>>790
2進数 0B01234567
8進数 0O01234567
16進数 0X01234567
793デフォルトの名無しさん:2010/08/05(木) 06:20:07
>>792
このおねぼけさん
794デフォルトの名無しさん:2010/08/05(木) 07:59:55
>>793
2進数 0b01111111
8進数 0o01234567
16進数 0x01234567
795デフォルトの名無しさん:2010/08/05(木) 08:03:08
ぶっちゃけ Python から Ruby の ActiveRecord に相当するものを使いたいときって
どんな ORM があるの?
http://takaki-web.media-as.org/blog/archive/2007/02/19/pythonactiverecord
とか
SQLAlchemy とか
Elixir とか

796デフォルトの名無しさん:2010/08/05(木) 14:24:33
すみませんGAEでpythonいじってます。
サンプルコードにconfig.pyってのがあって、グローバル変数の初期化をしています。
そこにBASE_URL =とあってURLを設定します。

で、これだとローカルテストとデプロイでいちいちURLを変えないといけないので改造したいわけです。

しかし、grepしてみてもどこからもconfig.pyを明示的に呼び出したりしてません。
pythonはアプリケーション起動時にアプリケーションディレクトリ以下のすべてのpyファイルを読み込むのでしょうか?
だとするとself.request.urlの戻り値が期待できないタイミングだと予想されます。

requestのタイミングで毎回セットするならグローバル変数にする意味ない気がするし・・・

こんなとき、自分のドメインを調べてグローバル変数にセットする一番標準的な方法を教えていただければ幸いです。

よろしくお願いします。
797デフォルトの名無しさん:2010/08/05(木) 17:11:34
BASE_URL = os.path.split(os.path.abspath(__file__))[0]
798デフォルトの名無しさん:2010/08/05(木) 18:00:02
>>797
これはローカルのパス・・・・ですよね?
799デフォルトの名無しさん:2010/08/05(木) 22:02:49
>サンプルコード

どこの?
800デフォルトの名無しさん:2010/08/05(木) 22:56:55
「新規」という名前のフォルダを作りたいのですが以下だとダメでした。
アドバイスいただきたいです。

import os
dir_name = '新規'
os.mkdir(dir_name)
801デフォルトの名無しさん:2010/08/05(木) 23:16:26
普通に作れると思うけどソースにencoding指定がないとかだろうか

とりあえずOSとPythonのバージョン
実行形態(スクリプトとして実行、あるいは対話型シェルから等)
あとエラーメッセージとどう「ダメ」だったのかをどうぞ
802デフォルトの名無しさん:2010/08/05(木) 23:17:17
import os
dir_name = u'新規'
os.mkdir(dir_name)
803デフォルトの名無しさん:2010/08/05(木) 23:24:16
作れなかったから例外が発生すると思うのだが
804デフォルトの名無しさん:2010/08/05(木) 23:29:18
コンソールからでなくアイコンをダブルクリックで起動してるとかかも

>>801にソースコードの文字コードも追加で
805デフォルトの名無しさん:2010/08/05(木) 23:35:08
作成権限ある?
806デフォルトの名無しさん:2010/08/06(金) 04:18:42
組み込み関数のソースコードを見ることはできないのでしょうか?
807デフォルトの名無しさん:2010/08/06(金) 04:56:46
808デフォルトの名無しさん:2010/08/06(金) 07:47:33
エロリおかず用HDDが逝ってからどうでもよくなった
エロサイトのブクマ外したり内臓HDDのエロ全消去して
エロ禁&オナ禁初めて現在14日目
最近ではIVやティッシュはもちろん、テレビでもエロイ事してる人がいるから
テレビも部屋から出した。
徹底してるぜ俺
809デフォルトの名無しさん:2010/08/06(金) 08:06:02
実況乙
810デフォルトの名無しさん:2010/08/06(金) 09:59:17
>>799
すみません個人ブログなので貼れません
811デフォルトの名無しさん:2010/08/06(金) 10:09:57
なんで?
812デフォルトの名無しさん:2010/08/06(金) 10:36:01
Windows XP SP3
Python 2.6.4
です。

ファイルのフルパスを受け取った文字列があります。
これを
ディレクトリパスとファイル名(拡張子なし)と拡張子名に分割し、再び結合する
というPythonプログラムはどうかけるでしょうか?

例えば
full_p_str = "D:\Dir1\Dir2\Dir3\filename.html"
のようにファイルのフルパスを受け取ってfull_p_strに格納し、
full_p_str_result = os.path.join(ディレクトリパス, 拡張子のないファイル名 + "." + 拡張子名)
のようにしたいのです。

よろしくお願いいたします。
813812:2010/08/06(金) 10:40:33
os.path.split
でフルパスをフルパス名を分割できるようですが、
ファイル名を拡張子とそうでない部分に分割するにはどうしたらよいでしょうか?
814デフォルトの名無しさん:2010/08/06(金) 10:43:55
それ専用なものは無いので正規表現をつかえばいいんじゃないですか?
815デフォルトの名無しさん:2010/08/06(金) 10:51:56
>>814
正規表現ですか。
ありがとうございます。
816デフォルトの名無しさん:2010/08/06(金) 11:08:02
>>> import os
>>> fullpath = r'D:\Dir1\Dir2\Dir3\filename.html'
>>> dirname, filename = os.path.split(fullpath)
>>> filename_wo_extension, extension = os.path.splitext(filename)
>>> os.path.join(dirname, filename_wo_extension + extension)
'D:\\Dir1\\Dir2\\Dir3\\filename.html'

>>> 'hoge.piyo.fuga.html'.rsplit('.', 1)
['hoge.piyo.fuga', 'html']
817デフォルトの名無しさん:2010/08/06(金) 11:09:09
os.path.basepath
os.path.filepath
818デフォルトの名無しさん:2010/08/06(金) 12:13:47
みなさんありがとうございます。
それで解決できました!!
819デフォルトの名無しさん:2010/08/06(金) 12:16:49
ttp://imagepot.net/image/128106448608.jpg
このようなコードを書くと、
インデントがおかしいと言われてしまいます。

このコードでコメントを全部消して一行につなげれば
通りますが、そうなると可読性が下がってしまいます。

どうすればこのような一見して分かる可読性を維持しながら
インデントで怒られないでしょうか?

よろしくお願いいたします。
820デフォルトの名無しさん:2010/08/06(金) 12:27:40
#bbb から#eeeの話だよな?
+ で繋ぐ部分はインデントどうやっても構わなくなるはずなんだけど

怒られてるの違う部分じゃないの?
821デフォルトの名無しさん:2010/08/06(金) 12:28:24
TypeError: bad operand type for unary +

って言われます・・・。
822デフォルトの名無しさん:2010/08/06(金) 12:31:44
s = 'aaa' + \
 ', ' + foo + \
 ', ' + bar + \ ...

文字列リテラルだけなら

s = ('aaa'
 'bbb'
 'ccc')
823デフォルトの名無しさん:2010/08/06(金) 12:32:25
+ \
ですか。
ありがとうございます。

それで解決します!
824819:2010/08/06(金) 12:34:57
+ \
で解決するかと思ったのですが、

SyntaxError: unexpected character after line continuation character

と言われてしまいました。
各行にコメントを後ろに付けたいので、そういう場合はどうすればよいでしょうか?
825デフォルトの名無しさん:2010/08/06(金) 12:46:12
a = (1 +  # one
     2 +  # two
     3)  # three
826819:2010/08/06(金) 12:56:08
>>825
ありがとうございます。
それで完全解決いたしました。

感謝申し上げます。
827812:2010/08/06(金) 13:05:43
>>812です。

環境は
Windows XP SP3 Python 2.6.4です。

Shift-JISのファイルを読み込んでUTF-8に変換し、
そのファイルを加工した後
再びShift-JISに戻したいのですが、どのようにすればよいでしょうか?

import codecs
f = codecs.open(ファイルのフルパス,"r", "utf_8", "ignore")
とすると元のファイルがUTF-8でないと開けず、
かといって
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
とすると開いたファイルがShift-JISのままです。

どなたか解決策を教えていただけますでしょうか?
828デフォルトの名無しさん:2010/08/06(金) 13:23:07
codecsの挙動わかってる?
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
この状態でreadすればUnicode文字列として読み込まれるから普通に加工できる。書き出すときも
w = codecs.open(ファイルのフルパス,"w", "shift-jis")
とやってwriteにUnicode文字列を渡せば、shift_jisに変換して書き込んでくれる
UTF-8相当のstrにして何かやりたいならencodeメソッドなりご自由に
829デフォルトの名無しさん:2010/08/06(金) 13:27:17
似たような質問をどこかで見たぞ??
830デフォルトの名無しさん:2010/08/06(金) 13:32:36
>>828
ありがとうございます。
codecsってそういう動作なのですね。
助かりました。
831デフォルトの名無しさん:2010/08/06(金) 17:50:32
s = 'aaa' + \ # hoge
 ', ' + foo + \ # fuga
 ', ' + bar + \ # hage ...

s = 'aaa' + # hoge \
 ', ' + foo + # fuga \
 ', ' + bar + # hage \ ...

どっちもだめなのか
832デフォルトの名無しさん:2010/08/06(金) 17:53:35
>>828

f = codecs.open(ファイルのフルパス,"r", "cp932", "replace")
w = codecs.open(ファイルのフルパス,"w", "utf-8", "replace")

が良くね?
833デフォルトの名無しさん:2010/08/06(金) 19:22:15
>>831
何スレか前に似たような内容を書き込んだ覚えがある
前者のような書き方は許して欲しいんだけどねぇ
834デフォルトの名無しさん:2010/08/06(金) 23:28:38
Python 2.6.4です。
<tab>単語1<tab>単語2
という形式の文字列が延々と羅列されてるtxtファイルで、
単語1の部分が以前の行で既出で重複している場合に、その行を消すにはどうしたらいいでしょう?
835デフォルトの名無しさん:2010/08/06(金) 23:56:52
>>834
もう少し具体的に
836デフォルトの名無しさん:2010/08/07(土) 00:00:18
tsvファイルからデータを読み込んで重複除去したいんでしょ
順序は維持しないとだめ?
837デフォルトの名無しさん:2010/08/07(土) 00:08:45
>その行を消す

この場合消すのは今見ている行なのか
既出で重複していた方の行なのか
あと2行じゃなくて3行以上の複数行が既出だったらどうするのかとか
838デフォルトの名無しさん:2010/08/07(土) 00:10:08
既出の単語1が単語2の位置にあっても既出とみなすのか
同じカラムのときだけ既出扱いするのか
839デフォルトの名無しさん:2010/08/07(土) 03:51:47
単語1同士の重複を処理するだけでいいなら、単純に:

fr = open("sample.txt", "r")
fw = open("output.txt","w")
catch = []

for line in fr:
 if line[1] not in catch:
  catch.append(line[1])
  fw.write(line)
840デフォルトの名無しさん:2010/08/07(土) 08:23:23
レスありがとうございます。
>>839さんの試してみます。

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"
<tab>*SYS_SHADERMODE0<tab><tab>"Auto"
<tab>*SYS_SHADERMODE1<tab><tab>"0.5"
<tab>*SYS_SHADERMODE2<tab><tab>"1.1"
<tab>*SYS_SHADERMODE3<tab><tab>"1.1"
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"

こういう感じの形式で、タブ、*から始まるタグ、不定数のタブ、"文字列"という行が延々と続いています。
上記の例だと*STD_PAUSED、*STD_GAMEのタグが重複しているので、
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"
の2行を削除したいのです。
行にあるタグが既出の場合その行を消すと言ったらいいのでしょうか。
841デフォルトの名無しさん:2010/08/07(土) 08:52:06
>>839さんのうまくいきませんでした・・・
842デフォルトの名無しさん:2010/08/07(土) 09:25:26
import sys

tags = []
for line in sys.stdin:
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.append(tag)
    print line,

C:\tmp> type src.txt | python hoge.py > dest.txt
843デフォルトの名無しさん:2010/08/07(土) 10:00:28
>>842
ありがとうございます。
ですがエラーが出てしまいます。

C:\Users\HOGE>type src.txt | python hoge.py > dest.txt
Traceback (most recent call last):
File "hoge.py", line 5, in <module>
tag = line.split('\t')[1]
IndexError: list index out of range
プロセスが、存在しないパイプに書き込もうとしました。

となります。
ここまで来たら自分でやれよ!ってレベルなんでしょうがほんとすいません・・・
844デフォルトの名無しさん:2010/08/07(土) 10:21:48
\tがない行がある
最後の行とか大丈夫か?
何行もあるなら例外処理だな
845デフォルトの名無しさん:2010/08/07(土) 10:38:00
なるほど\t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
改行しか無い行が割とあってその最初でエラーが出てます。
他にもコメントだけの行などあるので、
行頭のタブと*付きのタグから始まらない行は例外処理したほうがよさそうですが
その処理も書けませんのでお願いします・・・

情報を後出しにしちゃってすいません。
txtファイルは5000行くらいで*付きのタグは3000種類くらいあると思います。
行によっては
<tab>*tag<tab><tab><tab>"str"
のstrが長く200文字くらいの場合もあります。
846デフォルトの名無しさん:2010/08/07(土) 10:44:32
あらほんとだ。ごめん

for line in sys.stdin:
  if not line.startswith('\t*'): continue
  tag = line.split('\t')[1]
  ...

こんな感じでひとつ
847デフォルトの名無しさん:2010/08/07(土) 11:03:09
tags = []
じゃなくて
tags = set()
とでもしたほうがいいと思うよ
ほかは同じでいいけど

毎回わざわざリニアサーチする必要は無い
848デフォルトの名無しさん:2010/08/07(土) 11:15:28
ごもっともです
痛いところをつかれたので書き直しますね

import sys

tags = set()
for line in sys.stdin:
  if not line.startswith('\t*'):
    continue
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.add(tag)
    print line,
849デフォルトの名無しさん:2010/08/07(土) 11:30:41
できました!!長々とありがとうございました!
例外の行はそのまま残したかったので以下のようにしました。

import sys

tags = set()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 tag = line.split('\t')[1]
 if not (tag in tags):
  tags.add(tag)
  print line,
850デフォルトの名無しさん:2010/08/07(土) 11:51:40
The winner takes it all.
851デフォルトの名無しさん:2010/08/07(土) 12:28:02
すいませんまた質問させてください。

>>840のようなタブ、*から始まるタグ、不定数のタブ、"文字列"の形式で書かれている(例外もある)ファイルが2つあって、
例えばfile_en.txtには

<tab>*STD_PAUSED<tab><tab><tab>"pause"
<tab>*STD_GAME<tab><tab><tab>"game"

のように、file_jp.txtには

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"

となっている場合に、タグが同じところから文字列を引っ張ってくるといった処理は
どうやったらできるでしょうか。
852デフォルトの名無しさん:2010/08/07(土) 12:36:40
ちったぁ自分で考えろやボケ
853デフォルトの名無しさん:2010/08/07(土) 12:48:40
>>851 まず二つのファイルを1つに合わせて、ライン別に処理。
重複を見つけたらその行を " で割って文字列の部分だけ取り出す
やりたい事がわからんので違ってたらスマソ
854デフォルトの名無しさん:2010/08/07(土) 13:14:13
>>851
records_en = dict()
fields = '<tab>*STD_PAUSED<tab><tab><tab>"pause"'.split('\t')
tag, text = fields[1], fields[-1]
records_en[tag] = text

あとはがんがれ
いちいち質問してたら時間もったいないよ
855851:2010/08/07(土) 14:00:09
その通りです、楽しようとしすぎだ俺。
Pythonの初歩としてちょうどよさそうだから勉強がてらやってみます
856デフォルトの名無しさん:2010/08/07(土) 14:28:31
>>827
2.6以降でファイルを加工するなら、codecs.openより、ioモジュールの
io.openを使ってみるのはどうかな。
文字列とバイト列の扱いがPython3と同じでわかりやすくなっているし、
ファイルオブジェクトと同じように扱えて全改行文字サポートもある。
こっちの方が便利なんじゃないかな。
857デフォルトの名無しさん:2010/08/07(土) 15:03:29
質問する側がちゃんと質問できてればそうはならんと思う
ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?

質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け
858デフォルトの名無しさん:2010/08/07(土) 15:17:36
それが書ける奴なら質問しねーよバーカ
859デフォルトの名無しさん:2010/08/07(土) 15:18:38
質問者は回答するのに必要な情報を小出しながらも的確に提示し
エラーの原因を特定する能力もあったね

問題は単に丸投げしようとしてたこと
860デフォルトの名無しさん:2010/08/07(土) 15:27:57
質問者は、とりあえず
挙げた内容でわかる範囲の答えが欲しいだけ。

それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。

いたって普通の2chの使い方じゃねーの。
861デフォルトの名無しさん:2010/08/08(日) 20:12:55
>>845
> \t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
それは違う。

tag = line.split('\t')[1]

fields = line.split('\t')
tag = fields[1]
に変更すると、どの行でエラーが出るだろうか。

>>851は、俺ならこんな感じで実装するけど、こういうのって正直どうよ?
def add_dict(dic, item, value, overwrite=False):
  if overwrite or item not in dic:
    dic[item] = value

tags = dict()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 line_sp = line.split('\t')
 if not (tag in tags):
    add_dict(tags, fields[1], fields[-1])
862デフォルトの名無しさん:2010/08/08(日) 21:26:16
>>834,840,851とかです。
今やってることをはっきり言うとThe Chronicles of Riddick Escape from Butcher Bayという
PCゲームの日本語化ファイルが公開されているのですが、
私が買ったThe Chronicles of Riddick Assault on Dark Athenaでそれを流用したいのです。
AoDAにはEfBBの内容も含まれているのでそのままでも一応日本語化は出来ますが完全ではありません。
なのでAoDAの字幕ファイルにうまいことEfBB日本語化の成果をマージ出来ないかとやっていたんです。

しかしいろいろいじっているとそういう作業をしなくても割と綺麗に表示されるようになってしまいました。
Pythonの勉強はまた今度だな・・・!

ちなみのこのゲーム
http://store.steampowered.com/app/9860/
863デフォルトの名無しさん:2010/08/08(日) 21:49:08
リディックって映画で見たような。なつかしす
つかほかのゲームでもPythonはよく使うから勉強続けなさいYO
864デフォルトの名無しさん:2010/08/08(日) 23:39:10
Pythonの悩みはjava-jaがなんとかしてくれるよ。
865デフォルトの名無しさん:2010/08/09(月) 01:13:46
以下のアドレス、

http://yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html

から落としてきたソースをパスとユーザー名だけ書き換えてGAEにupすると以下のようなエラーが出ます。
<type 'exceptions.UnboundLocalError'>: local variable 'recent_tweet' referenced before assignment
Traceback (most recent call last):

python2.5、App Engine SDK 1.3.5です。ちなみに他の、あらかじめ指定した
言葉をポストするだけのプログラムはちゃんと動きました。どこをチェックするべきでしょうか。
866デフォルトの名無しさん:2010/08/09(月) 01:51:26
>local variable 'recent_tweet' referenced before assignment
ローカル変数「recent_tweet」に値が代入されるまえに参照されています.

recent_tweetまわりを確認
867デフォルトの名無しさん:2010/08/09(月) 02:03:49
868デフォルトの名無しさん:2010/08/09(月) 03:13:22
>>866
ありがとうございます。ほぼいじり始めたばかりなので理解があやふやなのですが、
「recent_tweet」は def run(name, pswd, search_term): の中で初めて出現し、
36行目で出現と同時にs.textが代入されています。値が代入される前に参照されていると
言うことはないように思うのですが…

>>867
最初、webプログラミングのあるスレで聞いてたんですが
いくらなんでもレベルが低いかな、と思ったのでこちらで…
エラーメッセージもpythonに一般的なことかと思ったので。
GAEに本質的に関わることは向こうで聞くつもりですがダメでしょうか?
869デフォルトの名無しさん:2010/08/09(月) 03:20:38
半年ROMってろ
870デフォルトの名無しさん:2010/08/09(月) 03:25:48
くだらない質問スレなんだからpython関係ならとりあえずいいっしょ
だから>>868ぐらいでいいんでねーの?
871デフォルトの名無しさん:2010/08/09(月) 03:52:24
>>865
そのコードだと、statusが空もしくはRTから始まるデータが1つもないときに
recent_tweetが初期化されない。
872デフォルトの名無しさん:2010/08/09(月) 03:53:38
# for s in status:
# if s.text.startswith("RT"):
# recent_tweet = s.text
# break
# else:
# print "The following tweet would be posted by hand, so skipped it."
# print "Tweet: " + s.text.encode('utf8')
# print
#
# print "Recent Tweet: "+recent_tweet.encode('utf8')

status の中で s.text.startswith("RT") が 真 のものがひとつもなければ
referenced before assignment になるだろう
873デフォルトの名無しさん:2010/08/09(月) 03:55:08
かぶった(笑
しかもこんな時間に orz
874デフォルトの名無しさん:2010/08/09(月) 04:50:49
>>871
>>872
あ、そうか…なるほど。ありがとうございます。
つまりfor文の前にrecent_tweetに適当なダミーの値でも入れておけばいいですか?
作法としてはどうすべきなんでしょうか。
875デフォルトの名無しさん:2010/08/09(月) 06:06:48
python 的にはこんなんでどうか

for s in status:
   if s.text.startswith("RT"):
      recent_tweet = s.text
      break
   else:
      print "The following tweet would be posted by hand, so skipped it."
      print "Tweet: " + s.text.encode('utf8')
      print
else:
  recent_tweet = 'None'
     
print "Recent Tweet: "+recent_tweet.encode('utf8')
876デフォルトの名無しさん:2010/08/09(月) 23:47:14
ちょっと力を貸して欲しいんですけど
linuxでbash scriptからpython scriptを起動しようとしてます。

すると、print()行でIOErrorが出てpython scriptは終了しちゃうんです。
IOError: [Errno 5] Input/output error

terminalで実行すると問題ないので、出力先が無いためのエラーだと
思うんですが、print()行を消さなくちゃ解決できない問題でしょうか?
877デフォルトの名無しさん:2010/08/10(火) 02:27:23
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
878デフォルトの名無しさん:2010/08/10(火) 02:53:46
print関数だよな?

def print(*args, **keys): pass
で関数を上書き
879デフォルトの名無しさん:2010/08/10(火) 07:11:15
printは関数じゃなくね?3系列ならできるんだろうか
import sys
sys.stdout = open('bbbb, 'a')
print "aaa bbbb ccccc"
的なものではどうだろうか

880デフォルトの名無しさん:2010/08/10(火) 11:29:32
もしくは起動するときに >/dev/null しておけ。
881876:2010/08/10(火) 12:32:24
>>878, 879
確かに上書きできませんでした。
879はログを作るってことですよね。

IOError現象は初めて気づいたのですが、
結局アウトプット先を明示する処理を挟まないと
エラーになるってことなんですかね。

そこらへん自動でやってくれる方法があるものだと
思い込んでました。

なぜかバックグラウンドでプログラムが落ちまくるので
変だなーと思ってました。

>>880
自分も/dev/nullでイケるかと思ってたんですが
なぜか、同じ結果になりました。
882デフォルトの名無しさん:2010/08/11(水) 02:30:44
>>875
ありがとうございます!ダミーでもよさそうでしたけど
そっちの方が綺麗なのでそうします。
883デフォルトの名無しさん:2010/08/12(木) 02:57:25
>>881
stdoutが上流で閉じられてるが、エラーにはしたくないということかな
とりあえず__builtins__.print()にモンキーパッチでいいんじゃないかな

builtins_print = print

def myprint(*a, **w):
 try:
  builtins_print(*a, **w)
 except:
  pass

__builtins.print = myprint

こんな感じでエラーを握りつぶすものに置き換える
884デフォルトの名無しさん:2010/08/12(木) 02:58:10
ああ最後の行__が足りないかも
ごめんそこは適当に直してw
885デフォルトの名無しさん:2010/08/12(木) 03:27:57
こまりますん
886デフォルトの名無しさん:2010/08/13(金) 23:10:46
pdbは対話的なデバッグなのでウェブアプリには使えませんよね
ウェブアプリのデバッグはどうするのがいいでしょうか?
887デフォルトの名無しさん:2010/08/13(金) 23:13:48
Firebug
888デフォルトの名無しさん:2010/08/14(土) 21:05:01
>>886
java-jaに質問を投げろ。ここでweb開発の質問は厳禁だカス
889デフォルトの名無しさん:2010/08/14(土) 23:52:36
LinuxのシステムファイルをWeb経由でいじれるようにroot権限でCGIを実行させたいのですが、
pythonにsuidperlみたいなものはありますか?また、他に良い方法があればそちらもご教示お願いします。
よろしくおねがいします。
890デフォルトの名無しさん:2010/08/15(日) 01:52:07
Cで汎用の安全に配慮したwrapper書いてる
891889:2010/08/15(日) 03:29:29
自前でhttpdを書くことで解決しました。
892デフォルトの名無しさん:2010/08/16(月) 01:26:11
http://abc.com/test.py?val=aaa
こんな感じでアクセスした時にvalの値をgetするにはどうしたらいいのでしょうか?
893デフォルトの名無しさん:2010/08/16(月) 02:25:49
import cgi
f = cgi.FieldStorage()
aaa = f.getvalue('val', 'no data')
894デフォルトの名無しさん:2010/08/16(月) 09:08:55
wsgi なら webob とか
http://pythonpaste.org/webob/
895デフォルトの名無しさん:2010/08/16(月) 12:00:52
ありがとうございました
896デフォルトの名無しさん:2010/08/16(月) 23:55:37
ShiftJISをUTF8に変換する方法をおしえてください。
897デフォルトの名無しさん:2010/08/16(月) 23:58:36
s.replace('ShiftJIS', 'UTF8')
898デフォルトの名無しさん:2010/08/17(火) 00:21:09
文字コードです><
899デフォルトの名無しさん:2010/08/17(火) 03:50:07
>>898
'死ね'.decode('cp932').encode('utf-8')
900デフォルトの名無しさん:2010/08/17(火) 05:42:08
'死ね'.decode('cp932', 'replace').encode('utf-8', 'replace')
901デフォルトの名無しさん:2010/08/17(火) 10:42:15
java-jaならやさしく教えてくれるのに><
902デフォルトの名無しさん:2010/08/17(火) 17:26:10
本スレで氏ね
903デフォルトの名無しさん:2010/08/18(水) 05:03:40
>>883
遅れましたが、ヒントをありがとうございます。
その手でいこうとおもいます。

from __future__ import print_function

builtins_print = __builtins__.print

def myprint(*a, **w):
try:
builtins_print(*a, **w)
except:
pass

__builtins__.print = myprint

こんな感じにしたら思い通りになりました。
904デフォルトの名無しさん:2010/08/19(木) 07:46:18
正規表現でヒットした文字列だけ取り出すやりかた教えて
905デフォルトの名無しさん:2010/08/19(木) 07:56:48
re.search
re.findall
re.match
906デフォルトの名無しさん:2010/08/19(木) 08:00:05
http://docs.python.org/library/re.html#re.findall

import re

s = "Hello,world."
L = re.findall("H.+,|w.+\.", s)
print " ".join(L)
907デフォルトの名無しさん:2010/08/19(木) 16:06:39
すみません。質問させてください。

環境
OS:WindowsXP バージョン:Python2.6 開発環境:エディタ+コマンドライン
やりたいと思っていること:
 WEBページでHTTPの応答としては正常で HTMLのページ内に"エラーが発生しました。"
 と表示されているページでエラーを検知したい。

描いたコード一部
//ヘッダの部分に下記追加
# -*- coding: utf-8 -*-

req = urllib2.Request(url)

  rawdata = opener.open(req).read()
chk = re.search(u"エラーが発生しました。",rawdata)
  if chk:
   print("失敗")
sys.stdout.flush()

downo = open( os.path.basename(savename) ,"wb")
  downo.write(rawdata)

というようなコードを書きました。この方法ではページ上のエラーが発生しましたという文字を検知できませんでした。
どなたかアドバンスをお願いできませんでしょうか?ちなみに、書き込んだhtmlファイルはUTF8で書き込まれておりました。
908デフォルトの名無しさん:2010/08/19(木) 16:14:39
utf8でかかれてたなら検索時に
re.search(u"エラーが発生しました。",rawdata.decode('utf-8'))
が必要じゃないかな

ユニコードとutf8の違いがわかってないと思われる
909デフォルトの名無しさん:2010/08/19(木) 16:39:20
re.search(u"エラーが発生しました。",rawdata.decode(req.header['Content-charset']))
見たいに書ければいいんだけどな
910デフォルトの名無しさん:2010/08/19(木) 16:40:51
アドバンスって釣りか?w
911デフォルトの名無しさん:2010/08/19(木) 16:56:22
UnicodeとUTF-8の違いは? その2
http://hibari.2ch.net/test/read.cgi/tech/1274937437/
912デフォルトの名無しさん:2010/08/19(木) 17:00:25
>>911
この場合はPythonでの扱いの話なんだからそっちに行ったら余計混乱しそうだ

u""とかdecodeによって作られるユニコード文字列は、utf8とは又違う文字コードだと考とけば大体大丈夫だろう
913デフォルトの名無しさん:2010/08/19(木) 17:05:41
返答ありがとうございます。
UnicodeとUTF8の違いわかってないですね。

調べてみました。
u指定での文字指定はUnicode型(符号化がUCS-2/4)で、UTF8とはちゃうんだよ
ってことですね。

てかそもそもの自分の勘違いはヘッダのcodingですね。
これソースを単にUTF-8で読み込みますってだけなのか。よく調べてみたら。
内部的に全部UTF-8になるものだと思ってました。

結果を得るまでに時間がかかりそうですが試してみます。
ありがとうございます。
914デフォルトの名無しさん:2010/08/19(木) 17:15:31
すみません
あるディレクトリにある xxx.png ファイルをすべて *.gif に変換したいのですが
python ではどのように書けば出来ますか?
915デフォルトの名無しさん:2010/08/19(木) 17:17:07
丸投げは宿題スレでも行ってろカス
916デフォルトの名無しさん:2010/08/19(木) 17:18:04
PIL
917907:2010/08/19(木) 17:33:15
ほんとだ アドバンスになってたわww
918デフォルトの名無しさん:2010/08/19(木) 17:38:18
919デフォルトの名無しさん:2010/08/20(金) 10:14:14
>>916
ありがとうございます
とりあえず
ttp://www.pythonware.com/library/pil/handbook/image.htm
を参考にして思った動作が出来るようになりました
920310:2010/08/21(土) 03:06:48
凄い初歩的な質問で申し訳ないのですが
Pythonで1行に複数の変数を定義しようと思って
a=0 \n b=1\n
こんな感じで書くとエラーになるのですが
どうしたら1行内に収めることが出来ますでしょうか
921デフォルトの名無しさん:2010/08/21(土) 03:08:31
a=0; b=1

pythonぽくないけど
922デフォルトの名無しさん:2010/08/21(土) 03:10:27
>>921
おお、ほんとだ
そう言えばPythonでも;って使えるんでしたね
ありがとうございます!
923デフォルトの名無しさん:2010/08/21(土) 06:55:56
a, b = 0, 1
こっちのほうがPythonぽい
924デフォルトの名無しさん:2010/08/21(土) 08:32:02
>>923
なにそのワンライナー
925デフォルトの名無しさん:2010/08/21(土) 10:32:29
多重代入も知らんのか
926デフォルトの名無しさん:2010/08/21(土) 12:37:17
知ってましたよ
927デフォルトの名無しさん:2010/08/21(土) 12:38:46
>>923
同意
928デフォルトの名無しさん:2010/08/21(土) 13:10:47
Explicit is better than implicit.
Simple is better than complex.
Sparse is better than dense.
929デフォルトの名無しさん:2010/08/21(土) 13:18:22
訳: ドイツの女よりもスペインの女のほうがよかった
930デフォルトの名無しさん:2010/08/21(土) 13:44:50
Young is better than old.
931デフォルトの名無しさん:2010/08/21(土) 18:45:38
畳じゃねえんだぞw
932デフォルトの名無しさん:2010/08/21(土) 18:49:06
e s s e esse
933デフォルトの名無しさん:2010/08/21(土) 19:06:59
Young is better than old.
画像でググった俺に隙はなかった
934デフォルトの名無しさん:2010/08/21(土) 19:13:48
When I was younger, so much younger than today!
935デフォルトの名無しさん:2010/08/21(土) 23:54:15
Oh, java-ja nice!!
936デフォルトの名無しさん:2010/08/22(日) 00:11:50
Java-ja is so neat.
but they are some hot shit.
937デフォルトの名無しさん:2010/08/22(日) 01:56:42
java-ja night開催をクリスマスに向け企画中
938デフォルトの名無しさん:2010/08/22(日) 20:40:16
Windows VistaでPython 2.6です。

質問しようと思ったら
自己解決しました。
939デフォルトの名無しさん:2010/08/22(日) 20:42:33
お礼くらい言えよ
940デフォルトの名無しさん:2010/08/22(日) 20:48:43
わろた
941デフォルトの名無しさん:2010/08/22(日) 20:53:00
>>939
大丈夫です
すでに直接言っておきました
942デフォルトの名無しさん:2010/08/22(日) 22:45:31
Windows XP SP2 で Python2.6です。

lis = ["aaa", "bbb", "ccc"]
の様に、文字列がいくつか格納されたリストがあります。
これを引数argとして受け取り
"aaabbbccc"
のように全てつなげた文字列として返す関数func(arg)を書きたいと思います。

lis.join()で行けるかと思ったら
AttributeError: 'list' object has no attribute 'join'とエラーになりました。

lisの要素数は確定していませんので、len(lis)で取得せねばなりません。
len(lis)==0である可能性と、lisの各要素がまた空文字列である可能性もあります。
しかしlisの要素がもしあるならそれは全て文字列であることだけは確定しています。


こんな関数func(arg)はどのように書けば良いでしょうか?
あるいはそれをしてくれる組み込み関数はありますか?

よろしくお願い申し上げます。
943デフォルトの名無しさん:2010/08/22(日) 22:49:56
reduce()
944デフォルトの名無しさん:2010/08/22(日) 22:50:44
''.join(lis)
945デフォルトの名無しさん:2010/08/22(日) 23:03:04
ありがとうございます。
lis = ["aaa", "bbb", "ccc"]
print 'lis'
print lis
print '"".join(lis)'
print "".join(lis)
はうまく動作しました。

print 'lis'
print lis
print 'reduce(labmda x, y: x+y, lis)'
print reduce(labmda x, y: x+y, lis)
だと
 reduce(labmda x, y: x+y, lis)
          ^
SyntaxError: invalid syntax
というエラーになります。
これはなぜでしょうか??
946デフォルトの名無しさん:2010/08/22(日) 23:08:18
lambda
947デフォルトの名無しさん:2010/08/22(日) 23:09:48
某サイトよりコピペしていました。


ありがとうございました。
948デフォルトの名無しさん:2010/08/23(月) 02:33:27
すみません、ランブダってなんですか?
949デフォルトの名無しさん:2010/08/23(月) 02:38:09
本当はもう気づいているのでしょう、ランブダが何であるかを。
950デフォルトの名無しさん:2010/08/23(月) 02:38:44
深いな
951デフォルトの名無しさん:2010/08/23(月) 08:09:32
ランブダは始まりであり全てである
952Perl忍者仙人モード ◆M5ZWRnXOj6 :2010/08/23(月) 09:16:56
なにこのキモイスレ
953デフォルトの名無しさん:2010/08/23(月) 13:31:31
950超えたので一応立てておきます
仲良く使ってね

くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/
954デフォルトの名無しさん:2010/08/23(月) 13:32:38
pythonって日本語弱いんですか?
955デフォルトの名無しさん:2010/08/23(月) 14:12:22
>>954
そんなことはない。
Windowsで使うならR*byよりいいと思う。
956デフォルトの名無しさん:2010/08/23(月) 14:13:35
>>954
だれがそんなこと言ったんだ
957デフォルトの名無しさん:2010/08/23(月) 14:14:29
私だ
958デフォルトの名無しさん:2010/08/23(月) 14:18:17
>>954
自分の経験から言うと日本語の文字列を扱う際に文字コードなんかを曖昧なまま処理した場合
Perl や Ruby は間違ってても「なんとなく」動くが Python はきっちりエラーになる
エラー出さずに勝手に文字化けするか例外出して中断するかの違いだな
959デフォルトの名無しさん:2010/08/23(月) 14:18:42
特にパス関係については他の追従を許さないぜ
960デフォルトの名無しさん:2010/08/23(月) 14:19:59
Javaのヌルポみたいなもんですね
961デフォルトの名無しさん:2010/08/23(月) 14:20:40
漏れはちなみにそこは Python の弱点じゃなくて利点だと思っている
962デフォルトの名無しさん:2010/08/23(月) 14:32:14
でも、WindowsのIDLEでは u"ほげ" ができない。 (Python3では直る)
sys.argv もUnicodeじゃなくてcp932なので、渡せないファイル名があり、
対策するには自分でGetCommandLineWしてコマンドライン解析しないといけない。
(これもPython3では直る)

WindowsのUnicode対応に関して言えば、Python3が最強だと思う。
963デフォルトの名無しさん:2010/08/23(月) 15:05:24
>sys.argv もUnicodeじゃなくてcp932なので、渡せないファイル名があり、

kwsk
964デフォルトの名無しさん:2010/08/23(月) 20:10:23
>>963
Python2 は int main(int argc, char *argv[]) で受け取った引数をそのバイト列のまま sys.argv
に入れてる。
Python3 は int _wmain(int argc, wchar *argv[]) で受け取った引数をそのUTF-16のまま
sys.argv に入れてる。
965デフォルトの名無しさん:2010/08/24(火) 05:35:23
urllib,urllib2を試してるんですが
なんで2つに分かれてるんですか?
あとcookieはどうしたら使えますか?
966デフォルトの名無しさん:2010/08/24(火) 08:12:49
os.path は UTF8 と Unicode がごちゃ混ぜ実装。
文字列の置き換えとか文字列処理用途には使えないや
967デフォルトの名無しさん:2010/08/24(火) 09:24:51
>>965
日本語リファレンスには書いてない話:urllibとurllib2の違いってなんだ
http://hylom.net/2010/02/10/urllib_and_urllib2_usag/
968デフォルトの名無しさん:2010/08/24(火) 09:32:07
>>966
嘘を書くな
969デフォルトの名無しさん:2010/08/24(火) 10:02:50
これは糞スレ
970デフォルトの名無しさん:2010/08/24(火) 10:56:59
Pythonスレの遅い初夏ですね
971デフォルトの名無しさん:2010/08/24(火) 11:05:54
>>965
import cookielib
cookielib.CookieJar() を変数に保存しておいて必要に応じて
urllib2.build_opener(urllib2.HTTPCookieProcessor())
に渡す
972デフォルトの名無しさん:2010/08/24(火) 11:10:27
>>967
ありがとうございます
2つの違いについては答えが見つかりましたが
そもそも2つに分かれている理由が判りません

>>971
ありがとうございます
やってみます
973デフォルトの名無しさん:2010/08/24(火) 11:26:59
>>972
>そもそも2つに分かれている理由が判りません

後方互換性を維持するためかなあ。
974デフォルトの名無しさん:2010/08/24(火) 11:36:12
>>> import re
>>> r = re.compile(r'hoge(.*)', re.I)
>>> for m in r.findall(u'hogefuga\nhogehage\nhogehoge\n'):
... print m
...
fuga
hage
hoge
各行毎に出て来ますが
'fuga\nhogehage\nhogehoge\n'
を出力として欲しいときはどうすれば良いでしょう?
975デフォルトの名無しさん:2010/08/24(火) 11:43:59
>>974
import re
r = re.compile(r'hoge(.*)', re.I)
x = r.findall(u'hogefuga\nhogehage\nhogehoge\n')
print u'\\n'.join(x)

でもお前正規表現における.と改行の扱い勘違いしてないか?
976デフォルトの名無しさん:2010/08/24(火) 11:53:39
r = re.compile(r'hoge(.*)', re.I | re.S)
977デフォルトの名無しさん:2010/08/24(火) 11:57:11
>>975
それだと
fugahagehoge
になっちゃいますよね

>>976
出来ました
ありがとうございました
978デフォルトの名無しさん:2010/08/24(火) 13:05:23
>>> import re
>>> r = re.compile(r'hoge(.*)hoge', re.I | re.S)
>>> for m in r.findall(u'hogefuga\nhogehage\nhogehoge\n'):
... print m
...
fuga
hogehage
hoge
これは
'fuga\nhogehage\nhoge'
が検出されているということだと思いますが
re.S をつけたままで
'fuga\n'

'hage\n'

''
が出て来るようにするにはどうすれば良いでしょう?
979デフォルトの名無しさん:2010/08/24(火) 13:11:32
>>978
それは最大一致になってる
(.*) → (.*?)
980デフォルトの名無しさん:2010/08/24(火) 13:59:13
>>979
出来ました
ありがとうございます

でも
'fuga\n'

'hage\n'

''
じゃなくて
'fuga\n'

''
しか取れません
981デフォルトの名無しさん:2010/08/24(火) 14:11:06
知らんがな
982デフォルトの名無しさん:2010/08/24(火) 21:48:50
くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/
983デフォルトの名無しさん:2010/08/24(火) 21:54:11
hoge(.*?)(?=hoge)
984デフォルトの名無しさん:2010/08/24(火) 21:56:12
>>983
出来ました
ありがとうございます
985デフォルトの名無しさん:2010/08/25(水) 10:57:14
コマンドの返り値がabcだとして

select = コマンド
select.replace('ab','cc')

これだと上手くいかないのは何故
986デフォルトの名無しさん:2010/08/25(水) 19:10:36
そんなに氏ねって言われたいのか
987デフォルトの名無しさん:2010/08/25(水) 19:17:23
>>985
>コマンドの返り値がabcだとして

kwsk
988デフォルトの名無しさん:2010/08/25(水) 19:58:18
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
989デフォルトの名無しさん:2010/08/25(水) 20:12:29
select = select.replace('ab','cc')
じゃね?
990デフォルトの名無しさん:2010/08/26(木) 02:26:20
あまりの過疎スレぶりに(ry
991デフォルトの名無しさん:2010/08/26(木) 16:59:53
ume
992デフォルトの名無しさん:2010/08/26(木) 17:00:21
ume
993デフォルトの名無しさん:2010/08/26(木) 23:26:03
うめ
994デフォルトの名無しさん:2010/08/26(木) 23:28:20
うめ
995デフォルトの名無しさん:2010/08/27(金) 01:07:28
ほっとけばおちるのに
996デフォルトの名無しさん:2010/08/27(金) 01:08:41
>>995はjava-ja
997デフォルトの名無しさん:2010/08/27(金) 01:19:56
人格の問題でしょ
998デフォルトの名無しさん:2010/08/27(金) 01:21:41
この板、dat落ち早すぎね?
最後まで拾えない事もしばしば
もっと速い板もありゅ
981を越えて落ちる時間は、もしかして板によらず一定なのかも。
運営のどこかに希望を持ってけば変えられるかなぁ?
dat落ちの条件って、確か
・一定レス数未満のスレで、一定時間書き込みが無い
・一定レス数以上(981?)のスレで、一定時間書き込みが無い
・板別に設定されたスレ保持数を超えた際、最終書き込み日時が古いもの
の3つだったっけ?
あ、でも最後のは定期的にチェックしてるだけで新スレが立った瞬間じゃないんだっけ
1ヶ月ルールがある板もある
999デフォルトの名無しさん:2010/08/27(金) 05:02:54
うめ
1000デフォルトの名無しさん:2010/08/27(金) 05:03:37
くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。