如何删除字符串中的前导零和尾随零?python

如何删除字符串中的前导零和尾随零?python,python,string,trailing,chomp,leading-zero,Python,String,Trailing,Chomp,Leading Zero,我有几个这样的字母数字字符串 listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', '000alphanumeric'] 删除尾随零的所需输出为: listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric'] listOfNum = ['231512-n','1209123100000-n00000','alp

我有几个这样的字母数字字符串

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-n','alphanumeric', '000alphanumeric']
listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
listOfNum = ['231512-n','1209123100000-n', 'alphanumeric', 'alphanumeric']
删除前导零和尾随零的期望输出为:

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
仅用于前导零)

更多信息请访问

您可以使用一些列表理解来获得您想要的序列,如下所示:

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]
您是否尝试过:


删除前导+尾随“0”:

list = [i.strip('0') for i in listOfNum ]
list = [ i.rstrip('0') for i in listOfNum ]
删除前导“0”:

list = [ i.lstrip('0') for i in listOfNum ]
删除尾部“0”:

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

您只需使用bool即可完成此操作:

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

   number = int(number)

else:

   number = float(number)

str.strip
是解决这种情况的最佳方法,但也是一种通用解决方案,它可以从iterable中剥离前导元素和尾随元素:

代码

import more_itertools as mit


iterables = ["231512-n\n","  12091231000-n00000","alphanum0000", "00alphanum"]
pred = lambda x: x in {"0", "\n", " "}
list("".join(mit.strip(i, pred)) for i in iterables)
# ['231512-n', '12091231000-n', 'alphanum', 'alphanum']

详细信息

注意,在这里,我们去掉了满足谓词的其他元素中的前导和尾随
“0”
s。此工具不限于字符串

另请参见文档以了解更多的示例

  • :两端剥开
  • :剥离左端
  • :剥去右端

第三方库是否可通过
>pip安装更多\u itertools

安装?如果列表中有其他数据类型(而不仅仅是字符串),请尝试此操作。这将从字符串中删除尾随零和前导零,并保留其他数据类型不变。这也会处理特殊情况s='0'

e、 g


不能按照OP的要求使用
alphanumeric0000
。对于
s='0'
的特殊情况,这个答案有没有巧妙的调整?@Charles:是的!我刚才遇到了同样的问题,您可以执行
s.strip(“0”)或“0”
:如果您的字符串变为空字符串,它将通过或计算为
False
,并将替换为所需的字符串
“0”
@Pierre,谢谢。这真的很有帮助,而且非常简单。高估