148

私はこれらのようないくつかの英数字の文字列を持っています

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)
4

7 に答える 7

315

基本はどうですか

your_string.strip("0")

末尾と先行ゼロの両方を削除するには?末尾のゼロのみを削除する場合は、.rstrip代わりに(.lstrip先頭のゼロのみ)を使用してください。

ドキュメントの詳細情報。

リスト内包表記を使用して、次のように必要なシーケンスを取得できます。

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]
于 2012-10-30T15:30:35.647 に答える
19

先頭と末尾の「0」を削除します。

list = [i.strip('0') for i in listOfNum ]

先頭の '0' を削除します。

list = [ i.lstrip('0') for i in listOfNum ]

末尾の '0' を削除します。

list = [ i.rstrip('0') for i in listOfNum ]
于 2012-10-30T15:33:28.383 に答える
9

bool を使用して簡単にこれを行うことができます。

if int(number) == float(number):

   number = int(number)

else:

   number = float(number)
于 2016-03-05T12:58:56.740 に答える
4

strip()で試しましたか:

listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
print [item.strip('0') for item in listOfNum]

>>> ['231512-n', '1209123100000-n', 'alphanumeric', 'alphanumeric']
于 2012-10-30T15:33:11.117 に答える