pythonchallenge Level 2

Posted OTAKU_undefined

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pythonchallenge Level 2相关的知识,希望对你有一定的参考价值。

第2关地址: http://www.pythonchallenge.com/pc/def/ocr.html

页面提示信息:

recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.

根据提示查看源码:

获得提示信息:find rare characters in the mess below 以及一段文本。

需要在这段文本中找到罕见的字符,先处理下文本信息,对每个字符计数。

按照计数排序之后可以发现有一些字母只出现了1次。

于是获取计数为1的字符,并按照出现的先后顺序排序。

from pandas import DataFrame

text = """
%[@&[+^@$}&{]{)+^&^#{{}@!}{^{%}#)@!%([$(_!([+({)@^(#@!)$[_&](!}@$*$@!(#[$+!@][}_*
... 太长了省略
#@}&$[[%]_&$+)$!%{(}$^$}*
"""
new_list = list(text) # 转为list
df_list = DataFrame(new_list) # 转为DataFrame
valueCounts = df_list.value_counts() # 获取每个字符计数

valueCounts_df = DataFrame(valueCounts)
valueCounts_df.columns = ["indexNum"] # 设置列名
valueCounts_df = valueCounts_df[valueCounts_df["indexNum"] == 1] # 得到计数为1的字符

# 寻找字符在原字符串中出现的位置
valueCounts_df = valueCounts_df.copy()
valueCounts_df["indexNum"] = valueCounts_df.index.map(lambda x: text.find(x[0]))
# 按照原字符串位置进行排序
result = valueCounts_df.sort_values(by="indexNum")
result_str = ""
for i in result.index.to_list():
    result_str += i[0]
print(result_str) # equality

最后得到 equality

获得下一关地址:http://www.pythonchallenge.com/pc/def/equality.html


本文来自博客园,作者:OTAKU_undefined,转载请注明原文链接:https://www.cnblogs.com/nicole-zhang/p/15557356.html

以上是关于pythonchallenge Level 2的主要内容,如果未能解决你的问题,请参考以下文章

pythonchallenge 解谜 Level 6

pythonchallenge Level 5

pythonchallenge Level 8

pythonchallenge Level 4

pythonchallenge Level 7

pythonchallenge Level 3