Py学习  »  Python

如何删除python中分号前的所有字母?[副本]

ERJAN • 5 年前 • 1872 次点击  

这个问题已经有了答案:

字符串:

“杰克;10;20;30\n奥马尔;20,24,25\n卡尔;30;30;30\n”

如何使用映射删除或筛选字符串中的所有名称?

str = filter( x.isdigit() , for x str)

但它似乎不能正常工作。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43288
 
1872 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Josef Korbel
Reply   •   1 楼
Josef Korbel    6 年前

在您的示例中,可以使用python的内置 re 列出理解力。

>>> import re
>>> text = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
>>> [number for number in re.split(';|,| |\n|', text) if number.isdigit()]
['10', '20', '30', '20', '24', '25', '30', '30', '30']

re.split 按拆分字符串 ; , , , \n

列表理解创建元素列表,这些元素是数字。

blhsing
Reply   •   2 楼
blhsing    6 年前

你可以 split 字符串,分割结果列表,然后重新- join 使用相同分隔符将列表切片为字符串:

s = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
print('\n'.join(';'.join(l.split(';')[1:]) for l in s.splitlines()))

这将输出:

10;20;30
20,24,25
30;30;30
Adam Dadvar
Reply   •   3 楼
Adam Dadvar    6 年前

使用split怎么样:

str = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
output_list = [line.split(";")[1:] for line in str.split("\n")]
output = [";".join(line) for line in output_list]
>>>['10;20;30', '20,24,25', '30;30;30', '']