2024-04-20 02:12:03 发布
网友
在Python2.7中,对于很长的字符串(比如1000个字符),如何将“abc”解析为“abc”?你知道吗
或者我该如何将“abccda”转换为“1 2 3 3 4 1”?(每个唯一的字母对应一个唯一的数字,1-4)
我想我可以一个接一个地去掉这些字符,但我对Python还不熟悉,不知道是否有一个简单的函数可以做到这一点。你知道吗
你是说列表法吗?你知道吗
s='abccda'
列表#['a'、'b'、'c'、'c'、'd'、'a']
第一个使用join():
join()
>>> s = 'abc' >>> ' '.join(s) 'a b c'
对于第二个:
>>> s = 'abccda' >>> ' '.join(chr(ord(c)-ord('a')+ord('1')) for c in s) '1 2 3 3 4 1'
或者你可以简单地用字典把字母映射成数字:
>>> s = 'abccda' >>> d = dict(a=1, b=2, c=3, d=4) >>> ' '.join(str(d[c]) for c in s) '1 2 3 3 4 1'
另一种方法是使用string.translate():
string.translate()
>>> from string import maketrans >>> s = 'abccda' >>> ' '.join(s.translate(maketrans('abcd', '1234'))) '1 2 3 3 4 1'
translate()将是首选,因为与简单的dict查找不同,它处理未映射的字符时不会出错:
translate()
>>> s='abcdefgh' >>> ' '.join(s.translate(maketrans('abcd', '1234'))) '1 2 3 4 e f g h'
x="abc" print re.sub(r"(?<!^)(.)",r" \1",x)
对于简单的转换,您可以尝试这个。给你映射可以在re.sub中定义repl函数
re.sub
repl
def repl(matchobj): if matchobj.group()=='b': return " "+str(1) elif matchobj.group()=='c': return " "+str(2) x="abc" print re.sub(r"(?<!^)(.)",repl,x)
你是说列表法吗?你知道吗
s='abccda'
列表#['a'、'b'、'c'、'c'、'd'、'a']
第一个使用
join()
:对于第二个:
或者你可以简单地用字典把字母映射成数字:
另一种方法是使用
string.translate()
:translate()
将是首选,因为与简单的dict查找不同,它处理未映射的字符时不会出错:对于简单的转换,您可以尝试这个。给你映射可以在
re.sub
中定义repl
函数相关问题 更多 >
编程相关推荐