将字符串拆分为两个独立的数字和字母列表 -python

2 投票
6 回答
5146 浏览
提问于 2025-04-18 02:26

标题大概已经说得很清楚了。比如说:

stringtosplit = 'hello57world' 

我想把它分成

letters = ['h','e','l','l','o','w','o','r','l','d']
numbers = ['5', '7']

然后再把它们都变回字符串,

letters = 'helloworld'
numbers = '57'

有没有什么简单的方法可以做到这一点?我希望我的代码尽量简洁。数字和字母可以出现在字符串的任何地方,而空格和特殊字符已经被过滤掉了。

6 个回答

0

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个特定的功能时,发现它没有按照预期工作,这时候就需要去查找原因。

通常,我们可以在网上找到很多资源,比如论坛、文档或者问答网站(像StackOverflow)。在这些地方,其他程序员会分享他们的经验和解决方案,帮助我们理解问题所在。

如果你在编程过程中遇到困难,不要气馁,尝试去搜索一下相关的问题,看看别人是怎么解决的。记住,编程是一个不断学习和实践的过程,遇到问题是很正常的。

import string

letters = []
numbers = []

for achar in thestring:
    if achar in string.ascii_letters:
        letters.append(achar)
    if achar in string.digits:
        letters.append(achar)

letters_string = "".join(letters)
numbers_string = "".join(numbers)
0

使用正则表达式:

import re

stringtosplit = 'hello57world'
letters = ''.join(re.findall('([a-zA-Z])', stringtosplit))
numbers = ''.join(re.findall('([0-9])', stringtosplit))
1

使用 str.joinstr.isalphastr.isdigit 和生成器表达式:

>>> s = 'hello57world'
>>> alphas = ''.join(c for c in s if c.isalpha())
>>> nums = ''.join(c for c in s if c.isdigit())
>>> print alphas, nums
helloworld 57
1

通常,你可以这样做:

>>> stringtosplit = 'hello57world'
>>> onlyLetter = "".join([i for i in stringtosplit if i.isalpha()])
>>> onlyLetter
'helloworld'
>>> onlyDig = "".join([i for i in stringtosplit if i.isdigit()])
>>> onlyDig

函数 i.isalpha() 会检查 i 是否是一个字母,而 i.isdigit() 会检查 i 是否是一个数字。

1
>>> stringtosplit = 'hello57world' 
>>> letters = []
>>> numbers = []
>>> for k in stringtosplit:
...     if k.isalpha() == True:
...         letters.append(k)
...     elif k.isdigit() == True:
...         numbers.append(k)
... 
>>> letters
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
>>> numbers
['5', '7']
>>> letters = ''.join(letters)
>>> numbers = ''.join(numbers)
>>> letters
'helloworld'
>>> numbers
'57'

可以使用 str.isalpha 来检查一个变量是否是字母,使用 str.isdigit 来检查它是否是数字。然后可以用 ''.join(str) 把一个 list 转换成 str

撰写回答