虽然也算勉强接触过几天了,但对python的了解还是很少的,今天看了一个pythonchallenge的过关挑战,做起来很费劲,第0关是参考别人的方法过的,到了第一关,也花了一上午,但是只翻译了那密文成明文,根本就不知道有个str.maketrans这个方法,所以就不知道怎么做了,而且python虽然有个文档,但没有发现像JAVA一样的API,因此只得参考网上的实现,最后看了一下官方的实现,比较好:
import string
text="""g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr
amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q
ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.
lmu ynnjw ml rfc spj."""
table = str.maketrans(string.ascii_lowercase,
string.ascii_lowercase[2:]+string.ascii_lowercase[:2])
s=str.translate(text,table)
print(s)
这里有个maketrans(from,to),把from相应位置的字符替换成to相应位置的字符,因此这个两个字符串的个数要相等。translate则是将maketrans定义的规则用于具体的字符串中。"""三个引用表示多行文本。
新版3.1中,有个bytes.translate(table[, delete])与bytes.maketrans(from, to) 方法取代了str.translate(table[, delete])、str.maketrans(from, to),bytes拥有str的所有方法,其实bytes到底有多大用,目前还不清楚,有可能是为了国际化吧,上面的代码可以改成这样:
import string
text="""g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr
amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q
ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.
lmu ynnjw ml rfc spj."""
table=bytes.maketrans(bytes(string.ascii_lowercase,encoding="utf-8"),
bytes(string.ascii_lowercase[2:]+string.ascii_lowercase[:2],encoding="utf-8"))
s=bytes.translate(bytes(text,encoding="utf-8"),table)
print(s)
可以看出,出了多了个字节编码以外,没什么不同的。
还有一种方法也非常好:
s="g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
o=""
for x in s:
if ord(x)>=ord('a') and ord(x)<=ord('z'):
o+=chr((ord(x)+2-ord('a'))%26+ord('a'))
else:
o+=x
print o
chr()方法作用是把相应的ascii码转换成字符,ord()表示将字符转换成相应的ascii。如果需要遍历索引可以这样for i,x in enumerate(s):...
关于str有些比较灵活的用法:
seq[start]
seq[start:end]
seq[start:end:step]
其实这种方式也适用于list,tuple(数组),如果省略了start,则默认为0,如果省略了end,则默认为len(s),因此s[:]与s[0:len(s)]是一样的,而step有点让人迷惑,如果要用上面的第三种方式,step的值是不能省略,表示跨度的意思,如s="abcdefg",则s[::2]='aceg',在,且step出可以为负数,如s[::-1]='gfedcba'。
值得注意的是,如果用ruby,代码更加简单:
text="g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr
amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q
ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb.
lmu ynnjw ml rfc spj."
text.tr('a-z','c-zab')
有空又看了一下第2关,这一关也是关于字符串的处理,就是把源代码中那些很多的散乱字符去掉就行了,直接把段字符复制放在一个文件sr.txt中,去掉相应的非法字符即可:
import string
text=open('e:/sc.txt').read()
bytes(text,encoding="utf-8").translate(None,bytes(string.punctuation+"\n",encoding="utf-8"))
这道题有很多中解法,有空再贴出来。
使用ruby也很简单:
s=open('e:/sc.txt').read()
p s.scan(/[a-z]/).join()
分享到:
相关推荐
C语言字符串转换为Python字符串的方法 C语言字符串转换为Python字符串是指将C语言中的字符串数据转换为Python中的字符串对象,以便在Python环境中使用。下面详细介绍了C语言字符串转换为Python字符串的方法。 使用...
Python字符串是编程语言中至关重要的数据类型,用于存储和处理文本信息。在Python中,字符串是不可变的,意味着一旦创建,就不能改变其内容。这个特性使得字符串在处理文本时非常安全,但也意味着如果需要修改,必须...
在给定的文件内容中,我们可以看到有关Python字符串操作的知识点。这些操作涉及到C语言风格的字符串函数模拟,但它们实际上并不是Python原生的字符串操作方法。Python语言本身就拥有强大的字符串处理能力,不过,...
Python字符串是编程中常用的数据类型,用于存储和处理文本信息。在Python中,字符串是由一个或多个字符组成的序列,它们可以被单引号(' ')或双引号(" ")包围。以下是一些关于Python字符串的重要知识点: 1. **字符...
Python 字符串处理实例 Python 中的字符串处理是 Python 编程语言中非常重要的一部分。字符串是 Python 中最基本的数据类型之一,它可以表示文本、数字、符号等。 Python 提供了多种字符串处理方法,本文将对 ...
实例如下: # bytes object b = bexample # str object s = example ...以上这篇python字符串str和字节数组相互转化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多
Python字符串操作常用函数,包含了检索、统计、分割、替换、大小写转换、对齐,空格删除、字符串判断(头尾+组成)
python字符串学习笔记
### Python 字符串操作方法详解 #### 一、概述 在 Python 编程语言中,字符串是最常用的数据类型之一。由于其广泛的应用场景,掌握字符串的各种操作方法对于提高编程效率至关重要。本文档提供了全面的 Python 字符...
本文将对Python字符串进行深入探讨,涵盖其基本概念、操作方法以及高级特性。 一、字符串定义与创建 在Python中,字符串是由单引号或双引号括起来的字符序列。例如: ```python str1 = 'Hello, World!' str2 = ...
Python 实现字符串模糊匹配 Python 是一种流行的编程语言,具有强大的字符串处理能力。字符串模糊匹配是字符串处理中的一种重要技术,用于解决字符串之间的相似度计算问题。在本文中,我们将介绍 Python 实现字符串...
Python 字符串是一种基本的数据类型, Python 中字符串可以使用引号('或")来创建, Python 访问字符串中的值可以使用方括号来截取字符串, Python 字符串连接可以对字符串进行截取并与其他字符串进行连接, Python ...
Python字符串是编程中常用的数据类型,它用于存储和处理文本信息。在Python中,字符串有其独特的特性和操作方式,让我们一一深入探讨。 首先,**字符串的驻留机制**是Python为了提高性能的一种优化策略。当创建一个...
Python字符串是编程中常用的数据类型,它用于存储一系列字符。字符串是不可变的,意味着一旦创建,就不能修改其中的单个字符。以下是一些关于Python字符串的重要知识点: 1. **字符串注释**:在Python中,可以使用...
Python 字符串使用和基本操作 Python 字符串类型是 Python 中一种基本的数据类型,用于表示文本数据。字符串可以是拉丁字母、数字、标点符号、特殊符号,以及各种语言文字字符。字符串类型是 str,表示字符串可以...
在Python程序设计中,字符串是数据类型的基本组成部分,它在各种场景中有着广泛的应用,比如文本处理、数据分析等。在上述的"三国演义 词频统计"案例中,我们学习了如何利用Python来实现对特定字符串的计数和定位。 ...
Python 字符串拼接方法详解 Python 中的字符串拼接方法有多种,本文将通过实例详细讲解这几种方法的使用及各自的特点。 字符串拼接方法一:使用“+”连接 Python 中最简单的字符串拼接方法是使用“+”连接。例如...
### 详解Python字符串对象的实现 #### 一、引言 在Python中,字符串是非常常用的数据类型之一。本文旨在深入探讨Python内部是如何管理和优化字符串对象的处理方式,特别是在字符串对象的存储、创建以及查找等方面...
Python 中的字符串是一种基本的数据类型,字符串实际上是一个有序的字符序列,字符是字符串中最小的单元,字符串是不可变的。下面将详细介绍 Python 中字符串的定义、索引、切片、常见操作等知识点。 字符串的定义 ...