1. ホーム
  2. python

[解決済み] 文字列の先頭と末尾のゼロを削除するには?Python

2022-02-06 19:34:07

質問

次のような英数字の文字列がいくつかあります。

listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', '000alphanumeric']

を削除した場合の出力は以下のようになります。 末尾 ゼロは次のようになります。

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']

の出力が必要です。 リーディング は、次のようになります。

listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']

先頭と末尾のゼロを削除した場合の希望出力は次のようになります。

listOfNum = ['231512-n','1209123100000-n', 'alphanumeric', 'alphanumeric']

今のところ、以下のような方法でやっています。

listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', \
'000alphanumeric']
trailingremoved = []
leadingremoved = []
bothremoved = []

# Remove trailing
for i in listOfNum:
  while i[-1] == "0":
    i = i[:-1]
  trailingremoved.append(i)

# Remove leading
for i in listOfNum:
  while i[0] == "0":
    i = i[1:]
  leadingremoved.append(i)

# Remove both
for i in listOfNum:
  while i[0] == "0":
    i = i[1:]
  while i[-1] == "0":
    i = i[:-1]
  bothremoved.append(i)

解決方法は?

基本はどうでしょう

your_string.strip("0")

は、末尾のゼロと先頭のゼロの両方を削除するのですか?もし、末尾のゼロだけを取り除きたいのであれば .rstrip の代わりに(そして .lstrip は先頭のもののみ)。

詳細な情報は doc.

リスト内包を使えば、こんな風に好きな配列を取り出せます。

trailing_removed = [s.rstrip("0") for s in listOfNum]
leading_removed = [s.lstrip("0") for s in listOfNum]
both_removed = [s.strip("0") for s in listOfNum]