Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
tse - Pythonによるテキスト整形ユーティリティ
Report
Atsuo Ishimoto
Follow
Developer at BeProud Inc.
Oct. 10, 2015
•
0 likes
23 likes
×
Be the first to like this
Show More
•
22,468 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Python入門
Shohei Okada
Python と型ヒント (Type Hints)
Tetsuya Morimoto
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
PEP8を読んでみよう
2bo 2bo
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
Python3 プログラミング勉強会
Tetsuya Morimoto
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
1
of
32
Top clipped slide
tse - Pythonによるテキスト整形ユーティリティ
Oct. 10, 2015
•
0 likes
23 likes
×
Be the first to like this
Show More
•
22,468 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Career
PyCon JP 2015における、tse(https://pypi.python.org/pypi/tse) の解説
Atsuo Ishimoto
Follow
Developer at BeProud Inc.
Advertisement
Advertisement
Advertisement
Recommended
3分でサーバオペレーションコマンドを作る技術
Kei IWASAKI
12.7K views
•
52 slides
第1回python勉強会
Yoshio Shimomura
2.5K views
•
60 slides
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
22.8K views
•
35 slides
Pyconjp2014_implementations
masahitojp
4.7K views
•
73 slides
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
aoshiman
5K views
•
24 slides
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
14.3K views
•
33 slides
More Related Content
Slideshows for you
(20)
Python入門
Shohei Okada
•
11.3K views
Python と型ヒント (Type Hints)
Tetsuya Morimoto
•
38K views
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
•
12.7K views
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
•
4.5K views
PEP8を読んでみよう
2bo 2bo
•
5.8K views
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
•
4.6K views
Python3 プログラミング勉強会
Tetsuya Morimoto
•
13.1K views
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
•
8.3K views
Goで言語処理系(の途中まで)を作ろう
Esehara Shigeo
•
4.8K views
Python東海Vol.5 IPythonをマスターしよう
Hiroshi Funai
•
52.2K views
静的解析を使った開発ツールの開発
Takuya Ueda
•
4.5K views
ひのきのぼうだけで全クリ目指す
AromaBlack
•
1.5K views
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
•
68.7K views
doctest を書こう @ pycon kansai
YosukeHojo
•
69 views
Python 2/3コード共存戦略 #osakapy
敦志 金谷
•
9.8K views
BPStudy#54 そろそろPython3
Atsushi Odagiri
•
3.7K views
Hubotをはじめる
nasa9084
•
757 views
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
•
2K views
PyCon JP 2014 plone terada
Manabu Terada
•
4.4K views
Sphinx HTML Theme Hacks
Shoji KUMAGAI
•
8.9K views
Similar to tse - Pythonによるテキスト整形ユーティリティ
(20)
Introduction of Python
Tomoya Nakayama
•
1.2K views
Python standard 2022 Spring
anyakichi
•
200 views
ALPSチュートリアル(4) Python入門
Computational Materials Science Initiative
•
2.3K views
Tokyor23 doradora09
Nobuaki Oshiro
•
2.1K views
研究生のためのC++ no.2
Tomohiro Namba
•
427 views
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
bitter_fox
•
1.4K views
Unix
Hiramatsu Ryosuke
•
1.7K views
2011.09.18 v7から始めるunix まとめ
Makiko Konoshima
•
1.1K views
Introduction to cython
Atsuo Ishimoto
•
14.9K views
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
•
1.8K views
PostgreSQLとpython
Soudai Sone
•
14.2K views
Write good parser in perl
Jiro Nishiguchi
•
2.9K views
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
•
2.2K views
Tfug kansai vol2
Natsutani Minoru
•
482 views
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
•
3.3K views
ふつうのLinuxプログラミング
Shuhei KONDO
•
3.2K views
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
•
18.4K views
Rの高速化
弘毅 露崎
•
38.3K views
Python Kyoto study
Naoya Inada
•
2K views
NumPyが物足りない人へのCython入門
Shiqiao Du
•
36.5K views
Advertisement
More from Atsuo Ishimoto
(11)
Pythonの紹介
Atsuo Ishimoto
•
798 views
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
Atsuo Ishimoto
•
14.2K views
行列演算とPythonの言語デザイン
Atsuo Ishimoto
•
9.3K views
Django pgroonga
Atsuo Ishimoto
•
1.2K views
Python 3.6 リリースパーティー 発表資料
Atsuo Ishimoto
•
4.4K views
python.jpの使い方
Atsuo Ishimoto
•
10.3K views
Python3と向かい合ってみる
Atsuo Ishimoto
•
5.7K views
Pythonのシグナル処理
Atsuo Ishimoto
•
12.5K views
Pythonのガベージコレクション
Atsuo Ishimoto
•
4.5K views
Slide at PyCon mini JP on 2011/1/29
Atsuo Ishimoto
•
1.6K views
String representation in py3k
Atsuo Ishimoto
•
1.1K views
Recently uploaded
(20)
#学位证靠谱办泰瑞维提理工学院文凭证书全套
qghfsvkwiqiubridge
•
0 views
#学位证靠谱办KU文凭证书全套
buxvunsvjiujzternetk
•
2 views
#学位证靠谱办Swansea文凭证书全套
76p522i4nqmocom
•
1 view
#学位证靠谱办Tulane文凭证书全套
buxvunsvjiujzternetk
•
2 views
#学位证靠谱办Durham文凭证书全套
76p522i4nqmocom
•
2 views
#学位证靠谱办不来梅大学文凭证书全套
qghfsvkwiqiubridge
•
0 views
《曼尼托巴大学毕业证|学位证书校内仿真版本》
hj123saf
•
2 views
20230524いろいろTV出演資料
KazuhitoKitamura
•
2 views
在哪里可以做《阿苏萨太平洋大学文凭证书|毕业证》
lobd15
•
2 views
#学位证靠谱办Adelphi文凭证书全套
buxvunsvjiujzternetk
•
4 views
a定制Flinders学士硕士文凭学历证书认证
lihira9657
•
2 views
在哪里可以做《德保罗大学文凭证书|毕业证》
lobd15
•
2 views
★可查可存档〖制作伊利诺伊大学香槟分校文凭证书毕业证〗
vvvvv24
•
0 views
《布莱顿大学毕业证|学位证书校内仿真版本》
124hdjkhas
•
2 views
#学位证靠谱办Biola文凭证书全套
buxvunsvjiujzternetk
•
2 views
★可查可存档〖制作墨尔本大学文凭证书毕业证〗
tujjj
•
0 views
a定制美因茨大学学士硕士文凭学历证书认证
pixehok765
•
3 views
#学位证靠谱办Widener文凭证书全套
76p522i4nqmocom
•
2 views
逆求人5分自己紹介プレゼン_0527.pptx
ShunHanai1
•
4 views
美国:德雷塞尔大学毕业证办理流程
zumuka
•
0 views
Advertisement
tse - Pythonによるテキスト整形ユーティリティ
tse Text Stream
Editor Pythonによる テキスト整形ユーティリティ 2015/10/10 PyCon JP 2015 Atsuo Ishimoto
自己紹介 2 いしもと 石本 敦夫 あつお python.jp ドメインの管理者 @atsuoishimoto 著書 Pythonライブラリ厳選レシピ Python文法詳解 パーフェクトPython
Unixのテキスト処理といえば 3 sed, awk, perlなどのワンライナーが定番 Pythonでもワンライナーを書きたい 使い慣れたモジュール群を手軽に活用したい いちいちスクリプトファイルを作成したくない シェルのヒストリーから呼び出したい
Pythonはワンライナー向き? 4 向きません インデントと改行が必須 sys, reなどのimportなど、タイプ量が多い ワンライナー用のコマンドラインオプションがない (Python2)
Unicode(Encode|Decode)Error $ python -c 'print u"あ"'|less 等。。。
tse Text Stream
Editor 5 Pythonによるテキスト整形ツール Pythonスクリプトをコマンドラインで指定 一般的なモジュール(sys, reなど)の自動イン ポート ファイルを読み込み、スクリプトを実行 入出力エンコーディングの指定
インストール方法 6 pip install tse Python2.7以降 Python3.3以降
tseの動作 7 1. テキストファイルを一行ずつ読み込み、 2. 行に一致するパターンがあれば、 3.
行を変数に代入し、 4.対応するアクションを実行する
$ tse -s
'^d+' 'print(L.lower())' -s '^w+' 'print(L.upper())' パターンとアクション 8 パターン 入力行を検索する、正規表現式 アクション パターンの検索が成功した時に実 行するスクリプト パターン アクション-sオプションで指定
サンプル 9 'spam' を含む行を、小文字に変換して出力 tse -s
"spam" "print(L.lower())" < s.txt
サンプル 10 行ごとに、すべての数字列の和を出力 tse -s ".*"
"print(sum(int(s) for s in re.findall(r"d+", L)))"" < s.txt
パターン 11 例 • spam|ham 'spam'
または 'ham' を含む行 • ^d+ 数字列で始まる行 reモジュールを利用 入力テキストを検索する正規表現式
アクション 12 例 • print('hello') 'hello'と出力 •
print(L.upper()) 行を大文字に変換して出力 パターンがヒットした行で実行するスクリプト
複数行のアクション 13 例 $tse -s '^w'
'if L:' ' print(L)' < spam.txt パターンには複数のアクションを指定できる。 2番目以降のアクションは、先頭のアクション の次の行として実行される。 if L: print(a)
インデント 14 $ tse -s
'.*' 'if len(L)>5:{{print(1)}}' {{ と }} でインデントするブロックを指定する if len(L)>5: print(1) 文字列・コメント中の"{{}}" はインデントとして扱わない 例) 'print("{{spam}}{{ham}}")
入力ファイルの指定 15 -s オプションに続けてファイル名を指定するとき は、オプションとファイル名を --
で区切る ファイル名が - のときは、標準入力から読み込む $tse -s '^d' 'print(S)' -- a.txt b.txt $tse -s '^d' 'print(L)' -- -
変数 16 処理中のテキストは、変数に格納される 変数名 内容 L 現在処理中のテキスト行全体 L0
テキスト行を空白で区切った文字列の 配列 L1, L2,... テキスト行を空白で区切った文字列の 1番目、2番目、… N L0の長さ
マッチ文字列 17 正規表現にマッチした文字列も変数に格納 変数名 内容 S 正規表現にマッチしたグループの配列 S0
正規表現にマッチした部分文字列全体 S1, S2,... ()で囲んだグループの部分文字列 グループ名 '(?P<グループ名>)' で指定したグルー プの部分文字列 M ReモジュールのMatchオブジェクト
変数のサンプル 18 $ echo 'ab
cd ef'| tse -s '.*' 'print(L3, L2, L1)' ef cd ab 空白区切りの単語を出力 $ echo '123abc' | tse -s '(?P<num>d+)(.*)' 'print(num, S2)' 123 abc パターンの部分文字列
変数のサンプル 19 $ls -l|tse -s
'' 'if N>2 and int(L5)>=1024:print(L9)' サイズ>=1024のファイル名を出力 $ ls -l total 168 -rw-r--r-- 1 ishimoto staff 698 10 6 12:58 HISTORY -rw-r--r-- 1 ishimoto staff 1064 10 6 12:39 LICENSE -rw-r--r-- 1 ishimoto staff 35 10 6 12:39 MANIFEST.in 1 2 3 4 5 6 7 8 9
その他の変数 20 変数名 内容 FILENAME 処理中のファイル名。標準入力の場合 は
'<stdin>' LINENO 処理中の行番号(1, 2, 3,…)
省略時のパターン 21 $ tse -s
'' 'print(L)' パターンが空文字列の場合、'.*' と同じ $ tse -s '.*' 'print(L)'
省略時のアクション 22 $ tse -s
'.*' '' アクションが空文字列の場合、'print(L)' と同じ $ tse -s '.*' 'print(L)'
beginアクションとendアクション 23 --begin オプション 起動直後に実行するアクション --end
オプション ファイル読み込み終了後に 実行するアクション $ tse --begin 's=0' --end 'print(s)' -s '.*' 's+=len(L)' *.txt 例) *.txt ファイル全文字数を出力する
インポート済みモジュール 24 $ tse -s
'.*' 'os.mkdir(L)' sys, re, os, os.path はインポート不要 os.path は、from os import path 形式 $ tse -s '.*' 'print(path.splitext(L)[1])'
モジュールのインポート 25 --module/-m オプション 実行前にモジュールをインポートする 例) $tse
-m math --begin 'print(math.sqrt(2))' --module-star/-ms オプション from モジュール名 import * 形式でインポートする 例) $tse -ms math --begin 'print(sqrt(2))'
エンコーディング指定 26 --input-encoding/-ie オプション 入力ファイルのエンコーディングを指定する 例) $tse
-ie cp932 -s '' '' --output-encoding/-oe オプション 出力ファイルのエンコーディングを指定する 例) $tse -ie cp932 -s '' ''
--inplace オプション 27 入力ファイルを、出力で上書きする。 $tse --inplace
.bak -s '' 'print(L.lower())' -- spam.txt 元のファイルは、指定した拡張子を付加した ファイルに保存
--script-file/-f オプション 28 起動前に実行するスクリプトファイルを指定する。 $tse -f
scr.py -s '' '' < spam.txt デフォルトでは、~/.tserc ファイルが存在すれ ば実行する。
拡張子ごとにファイルサイズ集計 29 $ find .
-type f | tse -ms collections -b 'c=defaultdict(int)' -s '' 'c[path.splitext(L)[1]]+=path.getsize(L)' -e 'for r in c.items():print(r)'
ipアドレスからホスト名逆引き 30 $ cat log
| tse -ms socket -s '' 'try:print(gethostbyaddr(L1)[0], L1)' 'except:print("unknown", L1)'
HTMLからa要素を抽出 31 $ curl www.python.jp
| tse -ms 'bs4' -b 'for a in BeautifulSoup(sys.stdin.read(), "lxml").find_all("a"):{{url=a.get("href", ""){{}}if url.startswith("http"):print(a["href"])'
ご清聴ありがとうございました 32
Advertisement