def clean_part_ethn(body):
  """
    Prepare a string to be parsed for ethnicities.

    Returns a "translated" string (e.g. all instances of "china" converted to "chinese")
  """

  # patterns that can create false positive situations
  patterns_to_remove = [r'black ?or ?african', r'african ?or ?black', r'no ?black', r'no ?african', r'no ?aa', r'white ?men', 
  r'white ?gentlemen', r'no ?spanish', r'speak ?spanish', r'black ?(guys|men|hair|client)', r'dark ?hair', 
  r'(dark ?)?brown ?hair', r'white ?tie']

  # indian states to convert the term 'indian'
  indian_states = ['awadhi', 'badhi', 'bhutia', 'garhwali', 'halbi', 'kamboj', 'bhattarai', 'bhotiya', 'pardeshi',
  'bengali', 'madra', 'tamil', 'rajasthani', 'adivasi']

  for p in patterns_to_remove:
    body = re.sub(p, '', body)
  for i in indian_states:
    body = body.replace(i, 'indian')

  # regex substitutions
  body = re.sub(r'hong ?kong', 'chinese', body)
  body = re.sub(r'snow ?bunn(y|ies)', 'white', body)
  body = re.sub(r'a\ss\si\sa\sn', 'asian', body)
  body = re.sub(r'l\sa\st\si\sn\sa', 'latina', body)

  # convert many ethnicity variations into standardized ones (e.g. china -> chinese)
  for sub in eth_subs:
    body = body.replace(sub, eth_subs[sub])

  body = re.sub(r' +', ' ', body)

  return body
Prepare a string to be parsed for ethnicities.

    Returns a "translated" string (e.g. all instances of "china" converted to "chinese")