|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 甲鱼飞鱼 于 2020-12-5 11:22 编辑
#统计字符串中各种符号出现的次数,并且找出小甲鱼送的一句话。
str0 = '~!@#$%^&*()_-+=[{]}\|/'
line =[]
f = open(r'C:\Users\Administrator\Downloads\string1\string1.txt',encoding = 'utf-8')
def str_count(str_name, one_str):
'用于统计长字符串中某个字符出现的次数'
str1_count = str_name.count('one_str')#此处开始出错。
return print('%s字符出现的次数为:%d'%(one_str,str1_count))
for one_str in str0:
str_count(f, one_str)
for each in f:
if each not in str0:
line.append(each)
print('小甲鱼送的一句话是:',line)
f.close()
① 你的str0是错的,文件中没有~符号
可以用这个代码找出文件中包含的单个字符串:
- # f = open(r'文件路径', encoding='utf-8')
- var_list = list(set(f.read()))
- for var in var_list:
- if var == '\n':
- continue
- else:
- print(var, end='')
复制代码
② str_count()函数中传入的f只是打开了,没有读取,所以错的地方应该是:
- str1_count = str_name.read().count(one_str)
复制代码
③ 修改之后可以正常运行,但是统计各个符号出现次数为0,是因为第一次循环知道了文件末尾,所以每次循环之后要用seek()方法把指针放到文件开头
④ 然后就是找出小污龟的话,可以把第一步中取出的str0中的字母去掉,然后用你第二个循环把不在str0中的字符加入到列表,代码如下:
- for each in f.read():
- if each != '\n':
- if each not in str0:
- line.append(each)
- print('小甲鱼送的一句话是:',line)
复制代码
⑤ 整个代码如下:
- str0 = 'G_O)+}K({@*LD&[^CU!$]%#'
- line =[]
- # f = open(r'文件路径', encoding='utf-8')
- def str_count(str_name, one_str):
- '用于统计长字符串中某个字符出现的次数'
- str1_count = str_name.read().count(one_str) # 此处开始出错。
- print('%s字符出现的次数为:%d'%(one_str, str1_count))
-
- for one_str in str0:
- str_count(f, one_str)
- f.seek(0, 0)
-
- str0 = '_)+}({@*&[^!$]%#'
- for each in f.read():
- if each != '\n':
- if each not in str0:
- line.append(each)
- print('小甲鱼送的一句话是:',line)
- f.close()
复制代码
|
|