くだすれPython(超初心者用) その45【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
2019/10/16(水) 10:17:12.96ID:dCHq3Ix4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/
2019/12/17(火) 09:45:31.97ID:QqOdTjZG
>>709
>大概の場合、PyAutoGUIで座標クリックにいきつくんですが、座標クリックだとウィンドウの大きさとか

PyAutoGUIでなくて申し訳ないが
私はそういう事で困る事の少ないAutoITXを使っている
座標系のマウスクリックだけじゃなくて、
アプリやウィンドウ、ダイアログの名前を判断して、指定したダイアログにある「了解」というボタンを押す
なんて命令が使えるから
2019/12/17(火) 09:54:50.75ID:OaYPHXYM
知恵袋でテトリスの回転のコードをもらったのですが、
https://ideone.com/2j9PhQ
このコードの内包表記の部分がよく分かりません(tmpのとこです)


この部分をもう少し一般的な書き方はできないでしょうか?
2019/12/17(火) 10:18:22.18ID:QqOdTjZG
質問です。python2.7.1 windowsです

リストを作りました
list = [“left” , 1 , 2, 3, “num_a1”]
要素は5個です

関数を作りまして、引数を5個にしました
関数にリストを読み込ませたら、無事に動きました

次に要素を15個に増やして
関数に、先頭から5個ずつ読み込ませて
3回、関数に仕事をさせたいと思います

リストは二次元配列にしようと思います

ばくぜんと、forを使うのだろうということは分かるのですが
ググっても類似のソースを見つけられず、悩んでます

気軽に「こんな手法があるよ」程度で、レスをつけてもらえればありがたいです
2019/12/17(火) 10:21:32.79ID:qeIaMe/y
自身の脳みそを一般的な水準にまで引き上げた方が早い
2019/12/17(火) 10:23:25.96ID:4rBcrl8A
AutoITは遅くてやめてpyautoguiはインポートするだけでDPIのスケーリング変わっちゃうから
Win32guiとctypesで全部書いて行った
2019/12/17(火) 10:27:52.81ID:GwugB5zt
>>711
お前、色んなとこで質問してコード継ぎ接ぎしてるだけだろ?
プログラミング向いてないからやめとけ。
2019/12/17(火) 10:29:46.26ID:qeIaMe/y
teratailの虐殺君じゃね?
2019/12/17(火) 10:47:25.74ID:sELGcuhs
大層な名前の割にしょぼそう
2019/12/17(火) 11:06:24.34ID:OaYPHXYM
>>715
わからないから質問して何が悪いのだろうか
2019/12/17(火) 11:32:25.65ID:GwugB5zt
>>718
ばかなの?

> お前、色んなとこで質問してコード継ぎ接ぎしてるだけだろ?
> プログラミング向いてないからやめとけ。

ただ向いてないだけ。
2019/12/17(火) 11:43:42.66ID:6LhBKKEf
>>718
質問すること自体は悪くはないが、自分の現在のレベルを自覚して目標を定めた方がいいぞ。
まずはテトリスは遠い未来の話にして、入門書を一から頑張れ。
連立方程式が分かりませんというから解説したら、九々ができないレベルでした、って状態だから、まずは九々を身に付けよう。
今理解できないレベルの問題を相手を変えて、説明の方法を変えてもらっても、理解できないことに変わりはない。相手に手間をかけさせるだけだし、君自身も前進せずに同じところをグルグルしてるだけだろう。
721デフォルトの名無しさん
垢版 |
2019/12/17(火) 12:13:38.61ID:rApV4krM
>>708
両方使ってるけど問題無い
先に conda の方使って conda に無ければ pip 使ってる
2019/12/17(火) 14:04:39.73ID:Ef4LKPDY
>>712
チュートリアルを一通りやってから出直そうか
チュートリアルで理解できないところがあったらそれを質問したらいい
https://docs.python.org/ja/2.7/tutorial/

今の段階でググって類似のソースを見つけようとするのは無駄どころか害でしかないよ
723デフォルトの名無しさん
垢版 |
2019/12/17(火) 14:11:37.23ID:rApV4krM
>>712
http://codepad.org/jnBqqX9F
2019/12/17(火) 14:14:27.53ID:q5RkcH8n
visualstudioでc#使ってるときのように、インテリセンスが働いて、なおかつスペースとかを教典通りに調整してくれるテキストエディタありませんか?
2019/12/17(火) 14:16:09.48ID:q5RkcH8n
vs→vcに乗り換えてインテリセンスが働くようになったのは良かったんですが、スペース入れるbekiどうかで悩んだり、そこに脳のメモリ取られるのがうっとうしい。。。
2019/12/17(火) 14:18:53.50ID:Ef4LKPDY
>>711

block = [ [11,12,13,14],
[15,16,17,18],
[19,20,21,22],
[23,24,25,26] ]

def rot():
____tmp = [[x for x in y] for y in block] # listのlistを一時用に作る

これはおちょくられてるのかもな
不必要なコードだけどリスト内包表記はPythonの基本なので理解する努力をしよう
2019/12/17(火) 14:29:57.73ID:QqOdTjZG
>>722
ありがとうございます
単にコピペで貼り合わせて動くものを作るにとどまらず
なぜ動くのかを理解しながら、参考資料にあたりたいと思います


>>723
ありがとうございます

実は調べてるうちに、chunkなる単語を知りまして
やりたかったことは、これだったんだと思ったと同時に
活路が開けたといいますか、学習が進みました
ヒントのソースありがとうございました
2019/12/17(火) 20:48:36.49ID:eGUcswGM
テトリスなんて、10年以上やってる香具師でも、簡単に作れない

Java 土方で有名なベテラン、T Umezawa の動画を見てみ。
こんな、神レベルの達人でも、タイルが壁にめり込んだりして、簡単には作れない!

落ち物パズルゲームのプログラミング解説 1/2
https://www.youtube.com/watch?v=iyMMaQWlF_0

素人が作るのは、10年以上早いw

作ったと言ってる香具師は、作っていない。
コピペしただけw
2019/12/17(火) 20:52:54.24ID:CYemexLv
お前の頭が悪いだけ
730デフォルトの名無しさん
垢版 |
2019/12/17(火) 23:11:25.06ID:8Os966QG
みんながんば!
2019/12/18(水) 00:22:03.39ID:Z6EQDlLl
Java土方で設計力もテスト設計力もないから書けないだけじゃないの

小学生の頃BASICのテトリスのコードの量見て難しいと思った記憶があるけど、今ならどんな言語でも書ける自信があるぞ

今のPCパワーで高速化とか考えなくていいなら愚直に書くだけだろう
2019/12/18(水) 01:38:39.95ID:N9ghlCsW
ブロック?じゃなく行列をなんで回転させようとするんだろう?
全く理解できない感覚なんだけど
733デフォルトの名無しさん
垢版 |
2019/12/18(水) 05:13:33.26ID:YyMc+ouu
a = ['01','03','05']
b = ['02','04','06']

ていう配列があって、それをforで回すんだけど。
for x,y in zip(a,b):
print(x,":",y)

1個飛ばしでstepさせることでてきますか?
マトモな言語ならfor i=0 to a.length step 1とかできるのに。
2019/12/18(水) 07:14:26.22ID:Qufxt8uf
>>733
自分の無知により自分の思うようにいかないからといって、マトモでないという思考はやめた方がいいぞ
2019/12/18(水) 08:09:09.35ID:ZgzG2chb
今時lengthだってw
原始人かよ
2019/12/18(水) 08:16:02.71ID:4Fp+UrW3
for x,y in list(zip(a,b))[0::2]:
print(x,":",y)
2019/12/18(水) 08:37:40.12ID:4Fp+UrW3
for i=0 to a.length step 1
をPyで使うなら、
for i in range(0, len(a), 2):
print(a[i],":",b[i])
な気がするが。
で、>>733はなんでzipを使うんだろ
2019/12/18(水) 09:26:00.82ID:NtHwU1Mj
for left in zip(*pos[::-1]:
とかで使ってるけどzip何なのか調べてないしちゃんと動いてるからいいや
739728
垢版 |
2019/12/18(水) 11:59:08.76ID:j3JURanB
>>731
T Umezawa は、Java, C#, C++ とか何の言語でも、
入力補完を使わずに、メモ帳にすごい勢いで書くだろw

土方を極めた、神としか思えないw

>>732
テトリスのすべてのブロックは、4×4 マスに納まる

キー操作による回転に、対応させないといけない。
90度左回転・右回転とか
740デフォルトの名無しさん
垢版 |
2019/12/18(水) 12:02:31.23ID:RQBBPl9v
造りたい言い始めてから何日かかってんだ
書き込む暇あったらさっさと造れ
一日もあったら出来るだろ
2019/12/18(水) 12:03:17.83ID:NtHwU1Mj
回転いらない1x1ブロックのテトリスつくったら?
2019/12/18(水) 12:08:51.54ID:vQ0YSRP4
>>741
あーこれいいね。絶対に伝わらない良アドバイスw
2019/12/18(水) 12:11:56.37ID:CFyyhfVu
面倒くせーから早く自殺しろ
2019/12/18(水) 13:39:56.45ID:N9ghlCsW
>>733
無理して使いにくい言語を使わなくても
マトモだと思う言語を使ったほうがいいと思うよ
皮肉じゃなく割とマジで

pythonでstep指定する時はslice/isliceを使う
は? slice? ってなっても我慢すること
pythonはそういう言語だから

for x, y in islice(zip(a, b), 0, None, 2):
____print(x, y)
2019/12/18(水) 14:00:04.04ID:N9ghlCsW
>>739
>テトリスのすべてのブロックは、4×4 マスに納まる

4x4マスに収まるからといってブロックを4x4の行列で管理するメリットって何かあるの?
viewとmodelの分離ができてないとしても
ブロックを行列で表現してそれを直接回転させようという発想になる理由に興味ある
2019/12/18(水) 14:05:40.87ID:j0+9FDxC
ていうかこのテトリス奴って一年くらい前にも同じレベルのレスしてなかったっけ?
747デフォルトの名無しさん
垢版 |
2019/12/18(水) 14:08:54.50ID:gHFmoE9o
一個飛ばしってただ単にこういうことじゃなくて?

>>> for n, m in zip(a[::2], b[::2]):
print(n, ':', m)


01 : 02
05 : 06

何をもめてるのかわからん
2019/12/18(水) 17:05:42.74ID:ZgzG2chb
>>746
10年前もテトリスの話をしてただろう
2019/12/18(水) 18:54:15.48ID:rPZysOi9
global宣言って何となく行儀が良くないような気がするのですが、上級者の方でも結構使いますか?
2019/12/18(水) 19:04:37.86ID:YQOjezK4
グローバル変数自体はPythonなら普通に使うけど、global宣言はほとんど使わない
しょっちゅう細かい粒度でグローバル変数を更新するようなことをするとスパゲッティ化しやすい
2019/12/18(水) 20:16:50.10ID:Kq662flJ
nonlocalならまあ、というかよく使う
globalはつかったことがない
752728
垢版 |
2019/12/18(水) 23:13:47.41ID:j3JURanB
>>745
各ブロックの回転パターンは、4つあるから、
ブロックを行列で表現して、それを直接回転させれば、1つで済む

行列の回転なら、動きがおかしくても、回転計算の部分だけを直せばよいけど、
4つのパターンを作っていると、それらのパターンを直接直さないといけないから、大変
2019/12/19(木) 00:00:42.47ID:snKgfw1x
>>752
回転軸とか壁や設置済みブロックで回転が制限されるケースを考えると
単純な行列回転じゃ無理だし1つの処理でも済むこともないよ
そもそも4x4の行列だとI型のブロック回転させるだけで上下に動いちゃうよ

普通にブロックの型、基準となる座標、向きをモデルとして管理して
描画ロジックとは分けたほうがいい
754デフォルトの名無しさん
垢版 |
2019/12/19(木) 01:26:15.66ID:qED21Kil
俺もテトリス作ろうしたことあったけど思ったよりややこしくて放置してるわ…
2019/12/19(木) 08:02:37.49ID:0eo+DnKB
専門学校のコンピュータ・アニメ・ゲーム科卒から数年経ってプログラマーを目指したくなった者なんですがやっぱり未経験者は四年制大学の新卒しか採用されませんか?
やりたい事はAIのプログラミングです
言語はPythonを覚え中です
2019/12/19(木) 08:11:07.93ID:EV4M7jYb
単純に需要による
アンドロイドプログラミングとかなら今は需要の割にクッソ人が少ないから
kotlin使えたら未経験だろうが就職できる可能性は比較的高い

一方pythonのほうはこれからどうなるかは分からないが
日本では現状深層学習用などの学問用言語で 実務に使っているところはあまりない
ということはつまりpythonでAIやっていくには大学で専攻したような専門知識を持った人たちに
対抗しなくちゃいけないわけで ちと難しいんじゃないか?
2019/12/19(木) 08:17:46.98ID:0eo+DnKB
>>756
わかりました
Kotlinにします
2019/12/19(木) 08:21:14.74ID:0eo+DnKB
早速ポチってきました!
作って楽しむプログラミング Androidアプリ超入門―Android Studio3.3 &Kotlin1.3で学ぶはじめてのスマホアプリ作成
2019/12/19(木) 09:36:46.63ID:Ez8BH22g
辞書で特定の単語を含むキーをワイルドカードで検索し
ヒットしたキーに対応している値を抽出したいのですが
辞書に正規表現検索を行うのはできないのでしょうか

プリミティブでは難しいでしょうか
760デフォルトの名無しさん
垢版 |
2019/12/19(木) 10:09:48.45ID:xAWELgvD
はい
761デフォルトの名無しさん
垢版 |
2019/12/19(木) 10:49:12.14ID:Crw8oya5
容易い
2019/12/19(木) 12:27:41.62ID:dMnFAlGo
Ruby では、正規表現のunion で「または」の正規表現を作ることができる。
その辞書の値を、gsub に渡すことで置換できる

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx
2019/12/19(木) 13:18:16.88ID:9Fgp9NK8
内包表記を使えば一瞬で解決する
764デフォルトの名無しさん
垢版 |
2019/12/19(木) 14:15:27.95ID:+cpLTGtZ
>>755
君がやるべきことは高校を卒業することだ
2019/12/19(木) 14:51:01.29ID:snKgfw1x
>>759
filter()かリスト内包表記
頻出パターン

foo = {"aaa.py": 1, "bbb.py": 2, "ccc.csv": 3, "ddd.txt": 4}
[value for key, value in foo.items() if ".py" in key]
Out: [1, 2]

条件が複雑ならifのところで正規表現や関数使ってもいい
2019/12/19(木) 15:36:09.20ID:Ez8BH22g
ありがとうございます。参考になります
2019/12/19(木) 18:28:38.99ID:V/5EkM6t
機械学習する時、anacondaでpipを使っています
何故、condaを使わないのでしょうか?
2019/12/19(木) 18:37:09.73ID:V/5EkM6t
× 機械学習する時、anacondaでpipを使っています
〇 機械学習する時、色々なサイトを見てみると大抵、anacondaでpipを使っています
2019/12/19(木) 19:19:08.89ID:PZllcG7i
そのサイトの記事を書いた人もまたどこかからコピペしてるからだよ
Anacondaがないと何もできないレベルの人が自分で一時情報源に当たって問題解決なんてできるわけないだろ?
そうやって元を辿っていくと、Anacondaを必要としないレベルの人に行き着く
2019/12/19(木) 19:30:49.49ID:V/5EkM6t
>>769
へぇー、結構適当な理由なんですねw
thank you
2019/12/19(木) 20:35:05.08ID:ZdWBIW9y
>>750
>>751
ありがとうございます
globalもnonlocalも設定値みたいに使ってglobal変数自体は更新しない場合が多いってことですか?

多少無理してでも引数と返り値でやりくりした方が見栄え良さそうですね
2019/12/19(木) 20:52:51.96ID:igx1CkSL
プロパティの勉強中

class Goods:
def __init__(self, name, price):
self.__data = {"name":name, "price":price}

def get_name(self):
return self.__data["name"]

def ste_name(self, value):
self.__data["name"] = value

def get_price(self):
price = self.__data["price"]
price__str = f"{price:,}円"
return price_str

name = property(get_name, ste_name)
price = property(get_price)


from goods_property import Goods
food = Goods("pizza",200)
print(food.name)    #1
food.name = "humberger"
print(food.name)    #2
food.price = 100
print(food.price)
2019/12/19(木) 20:54:02.72ID:igx1CkSL
#1で

Exception has occurred: AttributeError
'Goods' object has no attribute 'name'

ってなるのではなんで???
#2はOKなのに、initでデータ入ってないってこと?
2019/12/19(木) 21:28:47.05ID:xPsWnlhM
>>773
実行していないが
>food.price = 100
ではエラーになると思うが、nameのgetter、setterではエラーにならないんじゃないか
あと、setをsteにするってなんかの教えによるのか
775デフォルトの名無しさん
垢版 |
2019/12/19(木) 21:32:21.97ID:Crw8oya5
>>772
https://ideone.com/
に貼ってきて
2019/12/19(木) 21:44:29.89ID:igx1CkSL
>>775
https://ideone.com/kLRY44
これでOkでしょうか?
2019/12/19(木) 21:45:21.51ID:igx1CkSL
>>774
すいませんsteは自分で吹きました。。。
2019/12/19(木) 21:50:51.31ID:snKgfw1x
>>773
#2の直前の
foo.name = “humberger”
でfooにnameっていう変数を新しく追加してそれに”humberger”を代入してるから#2はエラーにならない

__init__で
self.name = name
self.price = price
ってやってればfooにはnameが#1の段階で存在するから#1もエラーにならない
779デフォルトの名無しさん
垢版 |
2019/12/19(木) 22:17:22.66ID:Crw8oya5
>>776
File "prog.py", line 13
price__str = f"{price:,}円"
^
SyntaxError: invalid syntax

>Exception has occurred: AttributeError
>'Goods' object has no attribute 'name'
再現できるコード貼ってくほしい
780デフォルトの名無しさん
垢版 |
2019/12/19(木) 22:19:55.36ID:Crw8oya5
https://ideone.com/MhxdDj
2019/12/19(木) 22:24:13.55ID:snKgfw1x
>>778
すまん、↓これ見落としてたわ
name = property(get_name, ste_name)
price = property(get_price)
2019/12/19(木) 22:33:20.61ID:snKgfw1x
インデントがあってればエラーにはならないね
2019/12/19(木) 22:43:58.50ID:igx1CkSL
>>778
本当だ・・・。
というか教科書の教材を打ち込んでただけなのですが、教科書自体間違ってるのか・・・。
1時間悩んだのが何だったのか・・・。

ありがとうございます。すっきりしました。
2019/12/19(木) 22:47:34.16ID:igx1CkSL
>>782
あれ・・・。

name = property(get_name, ste_name)
price = property(get_price)

のインデントってdef 〜と同じところではダメなのでしょうか?
2019/12/19(木) 22:49:21.05ID:igx1CkSL
よくわからなくなってきた。
properyは初期化には関わらないからinitで代入する
self.name = name
self.price = price
が必要って理解でいいのでしょうか?
786デフォルトの名無しさん
垢版 |
2019/12/19(木) 23:05:38.53ID:GR6pg+Yh
socket通信で送った文字列を、Pythonで受け取ってexecするプログラムを作りたいのですが
空いているポートにセキュリティ上の問題が発生してしまいます
セキュリティ問題を回避する方法ってないですか?
2019/12/19(木) 23:24:54.23ID:68JQcBLU
>>771
個人的にだけど…
globalは宣言もしないし値を使うだけってのもまずやらない
nonlocalは宣言するからには更新するし使うだけってのもバンバンやる
nonlocal宣言するのはGUI部分のみだけど
変数使うだけの方は100行の関数を10行単位の細切れにして引数は渡さないとかそんな感じ
2019/12/19(木) 23:49:48.18ID:4y7SvWFf
すいません質問なんですが
配列の中のものを交互に2つの処理をするにはどうしたらいいのでしょうか?

a=[0,1,2,3,4]という配列があるとして
0と2と4には5をかけて
1と3には2をたすとかどうしたら良いのでしょうか?
2019/12/19(木) 23:51:10.25ID:snKgfw1x
>>783

>>778に書いたことは一旦忘れてくれ
property()で設定してるのを見落としてたから

インデントが間違ってるってのは
get_name()や name = property(…)が
みんなdef __init__の中に定義されてるところ
790デフォルトの名無しさん
垢版 |
2019/12/20(金) 00:11:32.82ID:N19Ct9QI
>>788
これでできます
a=[0,1,2,3,4]
for i,number in enumerate(a):#enumrateでaの要素をnumberに入れる、要素番号をiに入れる
if number % 2 == 0:#numberを2で割った余りが0だった場合
  a[i]= a[i] * 5
else:
  a[i]= a[i] + 2
print(a)
2019/12/20(金) 00:26:29.96ID:aoxL/sZJ
>>780
それを修正したが、AttributeError なんででるかわからんな
https://ideone.com/dyL8m9
2019/12/20(金) 00:33:50.20ID:mwn52mbA
>>790
ありがとうございます
a[0::2]とか使うとforが二個できてカッコ悪いなあと悩んでました
助かります!、
2019/12/20(金) 00:56:22.82ID:LtdBIlOX
>>790
>if number % 2 == 0:
交互に処理したいなら if i % 2 == 0: じゃないかな
794デフォルトの名無しさん
垢版 |
2019/12/20(金) 09:41:12.09ID:N19Ct9QI
>>793
たしかに
見落としてた
2019/12/20(金) 12:09:16.88ID:c7XoinxY
>>764
もうPythonはあきらめました
2019/12/20(金) 13:05:32.03ID:qS4WQ1Uv
python2.7
windowsのアプリケーションからクリップボード経由で手にいれた文字列

“内閣総理大臣賞受賞”
を変数mymarkに入れておいて

u’総理’ in mymark

と演算子inで調べると、総理は存在するはずなのにFalseを返されます

右も左もソースに自分で打ち込んだ場合は正常なので
win経由のものはどこかでエンコードがおかしくなってるのではないかと思います

以下は調べてみました
type #右も左も<type ‘unicode’>
len(mymark) #9
内閣総理大臣賞受賞、で9文字ですね

len (u’総理’) #6
・これがどうして6になるのかよく分からない
2019/12/20(金) 13:20:02.56ID:L1XL0AeX
len(u'総理')の長さが6になるのは
多分python2では文字の長さを「文字列全体の容量 / 1文字の容量」で計算してるから
日本語などのマルチバイト文字だと実際の文字列の長さより長くなるんだろうなってことは分かる
(python3では普通に文字列の長さが表示された)

内閣総理大臣賞だけ9文字という正確な値になってるのはよくわからない
自分の調べたpython2環境ではlen("内閣総理大臣賞")で27になっていたが
2019/12/20(金) 13:26:15.19ID:qS4WQ1Uv
>>797
そうなんですか
じゃあ数があわないから、ここに問題が!と思いましたが
そうではないかも知れないのですね
2019/12/20(金) 13:28:24.35ID:A+TGdcd9
Ruby なら、powershell, clip コマンドを使って、
Windows のクリップボード処理もできる

Windows(CP932でin) → Ruby内部(utf8 で処理する) → Windows(CP932でout)

# frozen_string_literal: true

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
2019/12/20(金) 13:31:51.35ID:lig6lPK8
mymark = '内閣総理大臣賞受賞'
だと、18文字
mymark = u'内閣総理大臣賞受賞'
mymark = '内閣総理大臣賞受賞'.decode('cp932')
だと、9文字

最初のmymarkをユニコード文字列にデコードしておけばエラーは出ないね。

2.xのお作法、なんかいろいろ忘れてしまってる。
print()で怒られてしまったw
2019/12/20(金) 13:42:46.09ID:lig6lPK8
あと、
len(u'総理')
はちゃんと2になるよ。
python 2.7.17 @Windows10
2019/12/20(金) 15:26:09.89ID:qS4WQ1Uv
ありがとうございます
プログラムにして動かしてるもの(だが動かない)
があるのですが

右側、mymark に .decode(utf-8)を付けると
UnicodeEncodeError: ‘ascii’が出て

右側、mymarkには何もつけずに
左側(u’総理’)にするとエラーは出ないけれど、in演算子が動かない

試しに左側の総理から、uを取ってしまうと
こんどはUnicodeDecodeError:’ascii’が出るんですね
かなり悩ましいです

別のマシンにpython3環境を構築して、そっちに移植してどうなるか試してみます
803デフォルトの名無しさん
垢版 |
2019/12/20(金) 16:48:06.47ID:VlcbOuJw
馬鹿には無理
2019/12/20(金) 17:40:34.24ID:lig6lPK8
>>802
decode() の中のコードページはクォートで囲わないとだめだよ
2019/12/20(金) 18:07:44.29ID:LtdBIlOX
>>796
>右も左も

右とか左の意味がわからない
「A in B」のAを左、Bを右と呼んでる?
2019/12/20(金) 21:06:36.63ID:ITSL0wmI
全角文字列に対してIF処理を入れたいのですが、何で判別すれば良いですか?

検索対象の文字コードはutf8で、
漢字、ひらがな、カタカナ、全角英数を含む可変長の文字列が対象です。
2019/12/20(金) 21:41:38.87ID:LtdBIlOX
if "バカ" in "バカボン":
___print(True)

True
2019/12/20(金) 23:48:14.57ID:c7XoinxY
Pythonは才能が必要
2019/12/21(土) 00:02:01.64ID:k+w4ikT0
>>808
別スレでpythonやめてkotlinやるって言ってた人か?きっとすぐに同じことを言い出すぞ。
入門レベルで必要なのは才能なんかじゃなく、ごく普通レベルの根気と理解力だけだぞ。才能がどうこう言うような段階まで到達してもいないだろう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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