如何删除字符串中的前导零和尾随零?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,谢谢。这真的很有帮助,而且非常简单。高估