docs: def find_city(self, city, state=None, best_match=True, min_similarity=70):
          """
          Fuzzy search correct city.
  
          :param city: city name.
          :param state: search city in specified state.
          :param best_match: bool, when True, only the best matched city
              will return. otherwise, will return all matching cities.
  
          **中文文档**
  
          如果给定了state, 则只在指定的state里的城市中寻找, 否则, 在全国所有的城市中寻找。
          """
          # find out what is the city that user looking for
          if state:
              state_sort = self.find_state(state, best_match=True)[0]
              city_pool = self.state_to_city_mapper[state_sort.upper()]
          else:
              city_pool = self.city_list
  
          result_city_list = list()
  
          if best_match:
              city, confidence = extractOne(city, city_pool)
              if confidence >= min_similarity:
                  result_city_list.append(city)
          else:
              for city, confidence in extract(city, city_pool):
                  if confidence >= min_similarity:
                      result_city_list.append(city)
  
          if len(result_city_list) == 0:
              raise ValueError("'%s' is not a valid city name" % city)
  
          return result_city_list