Python学习笔记--字符串操作string

        Python中的字符串可以使用单引号,双引号,三引号表示。

        单引号(')与双引号(")代表的意思相同,但要注意配对着用。并不分成单引号代表一个字符,双引号代表一个字符串,实际上Python中没有char。

        三引号('''...''' or """...""")相比于前两者的的优势是,三引号内部可以自由使用单引号与双引号,可以用于描述一段对话中(因为里面很多引号),或者对一个函数的描述(因为可以指示一个多行的字符串,可以直接敲回车,而不用手写\n)。

        转义符及'\'(表示当前行未结束,下一行继续)与C语言相同。

        值得注意的是自然字符串与Unicode字符串。自然字符串可以将转义符取消掉,如:str=r'1 \n 2', print的结果为 “1 \n 2”,其中'\'与'n'表示两个字符,len(str)=6。 Unicode用于对非英文字母的处理,虽然str=u'1 \n 2', print的结果也为 “1 \n 2”,但'\n'还是表示换行符,只是并没有被直接转义,len(str)=5。

        Python中,字符串也是不可以直接通过赋值改变的,想要对字符串进行某些修改时,要用到字符串相关的一些函数(注意:修改完后,原字符串仍未改变,需要将改变后的结果存到另一个字符串变量中):


        len(str): 获取str的长度。

        enumerate(str): 返回str的index与value组成的元组。

        str.append(value): 在字符串str最后添加数据value。与str.pop()结合可以实现stack与queue

        str.pop(index): 从str中弹出位于index的数据,默认为最后一个,实现stack时,使用str.pop()表示栈顶数据弹出,实现queue时,使用str.pop(0)表示队列数据弹出。

        str.upper(), str.lower(), str.swapcase(): 全部大写,全部小写,大小写转换。

        str.find(subStr, start, end), str.rfind(subStr, start, end): 字符串搜索函数,分别表示从左往右与从右往左搜索,start与end是可选参数,默认值分别为0与-1,find()是从start到end, rfind()是从end到start. 当可以找到substr时,函数返回值为发现的第一个subStr的下标(不论是find()还是rfind()函数,字符串下标均是从左往右),如果未找到,则返回-1,不是0(这点,写if-else的时候需要注意)。

        str.count(subStr): 也是搜索函数,找到str中的substr的数目。

        str.replace(oldSub, newSub, maxReplaceTimes): 字符串替换函数,如果可以在str中找到oldSub,则将oldSub替换为newSub,否则不替换。maxReplaceTimes为可选参数,表示替换的次数,默认为替换所有可找到的oldSub。

        str.strip(subStr): 从字符串开始与结尾处分别搜索,直到未遇到subStr中的任何单个字符,停止;如果遇到,则删除,并继续搜索。如str='ababcabab'; str.strip('abc') 结果为''。subStr也是可选参数,默认值为空白符('\n', '\r', '\t', ' ')。类似的有lstrip()与rstrip()函数,分别表示从左往右与从右往左搜索。经常用于读文件中:

for line in file.readlines: # 或者 for line in file:
    line_new=line.strip() #由于readlines函数不去除每行结束时的换行符,需要手动去除。将line.strip()改为line.strip().split()则可得到每个单词

       str.split(subStr): 字符串截断函数,将字符串以subStr为分界线分开变为一个由子字符串组成的list(subStr分开后消失)。subStr默认值为空格。

       str.join(list): 将str加在list每相邻的两个item之间,返回一个新的string,list中的item必须都是string。一个主要用处是对list的items加空格,并变成一句话。

       还有一些判断函数(如以is开头,返回bool型):str.islower(), str.isupper(), str.startswith(subStr), str.endswith(subStr), str.isalpha(), sub.isdigit() 等。

       最后,Python也支持八进制(oct),十六进制(hex),及ascii码转换(chr(), ord()). 这两个函数并不是字符串方法,而是Python的内建函数,所以使用的时候,是传递参数,而不是像str.method() 这样来使用。如:

>>> chr(112) #ascii码转数字或字符,输入为0<=value<=255
'p'
>>> ord('p') #数字或字符转ascii码,参数为str
112
>>> hex(11) #十进制转16进制,结果为str
'0xb'
>>> oct(11) #十进制转8进制,结果为str
'013'
>>> unichr(112) #unicode码值转数字或字符
u'p'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python学习笔记|字符串与正则表达式练习题答案 1. 练习题1: 题目:给定一个字符串s,找出其中的连续的最长的数字串。 答案:可以通过正则表达式来匹配数字串,然后使用max函数找出最长的。 代码示例: import re def find_longest_num_str(s): num_str_list = re.findall('\d+', s) longest_str = max(num_str_list, key=len) return longest_str s = "ab1234c56789def" print(find_longest_num_str(s)) 输出:56789 2. 练习题2: 题目:给定一个字符串s,将其中的每个空格替换为"%20"。 答案:可以通过正则表达式的sub函数来实现替换。 代码示例: import re def replace_space(s): new_s = re.sub(' ', '%20', s) return new_s s = "Hello World" print(replace_space(s)) 输出:Hello%20World 3. 练习题3: 题目:给定一个字符串s,判断它是否为回文字符串。 答案:可以使用切片操作字符串反转,然后与原字符串进行比较。 代码示例: def is_palindrome(s): return s == s[::-1] s = "abcba" print(is_palindrome(s)) 输出:True ### 回答2: 以下是关于字符串和正则表达式练习题的答案: 1. 给定一个字符串s,编写一个函数,返回该字符串的反转字符串。 def reverse_string(s): return s[::-1] 2. 给定一个字符串s,编写一个函数,返回是否是回文字符串。 def is_palindrome(s): return s == s[::-1] 3. 给定一个字符串s和一个字符c,编写一个函数,返回字符串s中字符c的出现次数。 def count_char(s, c): return s.count(c) 4. 给定一个字符串s,编写一个函数,返回字符串s中的所有单词列表。 def split_words(s): return s.split() 5. 给定一个字符串s,编写一个函数,返回字符串s中的所有数字列表。 import re def extract_numbers(s): return re.findall(r'\d+', s) 这只是一些可能的答案,其中的解决方法可以有很多种。每个问题都有不同的解决方案,具体取决于个人的编程风格和需求。希望这些答案能够帮助你理解和学习Python中的字符串和正则表达式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值