質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

6557閲覧

Pythonの文字列でドット以降を削除したい

Ykkykk

総合スコア140

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

2クリップ

投稿2018/08/21 08:15

Pythonでの文字列の中からドット以降の部分を削除したいのですが、どのような方法があるのでしょうか?

変数の中にミリ秒まで含まれた時間(HH:MM:SS.SSSSSS)が文字列として入っており、表示する際に小数点以下を切り捨てて「HH:MM:SS」にしたいです。

re.subで正規表現を用いて削除するのかと思いましたがうまくいきませんでした。正規表現の書き方が違うのだと思います…。

Python

1timeという変数に時間が入っているとします。 2re.sub('[.*]', '', time)

このように指定した結果、「HH:MM:SSSSSSSS」のように、ドットだけが消えてしまいました。
また、このような方法以外に、小数点以下を表示しないようにする方法はあるのでしょうか?

ご教示いただけますと幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

正規表現を使うなら、『ドット以降の任意の文字列』を空白に置換します。

Python

1>>> time = 'HH:MM:SS.SSSSSS' 2>>> re.sub(r'..+$', '', time) 3'HH:MM:SS'

ご提示の正規表現は、『 \ あるいは . あるいは * 』を表現してしまっています。
**訂正: **『 . あるいは * 』を表現してしまっています。

もしくは

文字列のメソッドをうまく利用する方法が一つ。

Python

1>>> ''.join(time.split('.')[:-1]) 2'17:26:30'

datetimeモジュールを利用しても良いでしょう。

Python

1>>> import datetime as dt 2>>> 3>>> t = dt.datetime.strptime(time, '%H:%M:%S.%f') 4>>> print(t) 51900-01-01 17:26:30.123456 6>>> 7>>> t.strftime('%H:%M:%S') 8'17:26:30'

参考: Python 標準ライブラリ » datetime » strftime() と strptime() の振る舞い

投稿2018/08/21 08:24

編集2018/08/21 08:34
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ykkykk

2018/08/21 08:29

早速ご回答いただきありがとうございます。 正規表現の基礎がわかっていませんでした。 初歩的な質問にお答えいただき本当にありがとうございます!
Ykkykk

2018/08/21 08:37

他の方法までお教えいただきありがとうございます! 大変勉強になります。参考にいたします。
LouiS0616

2018/08/21 08:45

datetimeモジュールを利用するのが、面倒でも応用が効くように思います。 時間として解釈できない文字列を勝手に弾いてくれますし。
Ykkykk

2018/08/21 08:46

なるほど、時間ではないものが入る可能性もあるということですね。 補足いただきありがとうございます!
guest

0

python

1>>> s = "HH:MM:SS.SSSSSS" 2>>> s[:s.index(".")] # "."の位置を調べてスライス 3'HH:MM:SS' 4>>> s[:8] # そもそも固定長フォーマットならこれでいいのでは 5'HH:MM:SS'

投稿2018/08/21 10:45

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ykkykk

2018/08/22 00:07

返信が遅くなり申し訳ありません。ご回答いただきありがとうございます。 スライスを使用してそれだけでも指定できるのですね。 ご教示いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問