Regex - разрешить все специальные символы в регулярном выражении паролей без указания их в моем коде [duplicate]

Если вы хотите сделать reduceByKey, где тип в приведенных парах KV отличается от типа исходных пар KV, то можно использовать функцию combineByKey. То, что делает функция, - это взять пары KV и объединить их (по Key) в пары KC, где C - это другой тип, чем V.

В одном задаются 3 функции, createCombiner, mergeValue, mergeCombiners. Первый указывает, как преобразовать тип V в тип C, второй описывает, как объединить тип C с типом V, а последний указывает, как объединить тип C с другим типом C. Мой код создает пары KV:

Определите 3 функции следующим образом:

def Combiner(a):    #Turns value a (a tuple) into a list of a single tuple.
    return [a]

def MergeValue(a, b): #a is the new type [(,), (,), ..., (,)] and b is the old type (,)
    a.extend([b])
    return a

def MergeCombiners(a, b): #a is the new type [(,),...,(,)] and so is b, combine them
    a.extend(b)
    return a

Затем My_KMV = My_KV.combineByKey(Combiner, MergeValue, MergeCombiners)

Лучший ресурс, который я нашел при использовании этой функции: http://abshinn.github.io/python/apache-spark/2014/10/11/using-combinebykey-in-apache-spark/

Как указывали другие, a.append(b) или a.extend(b) return None. Таким образом, reduceByKey(lambda a, b: a.append(b)) возвращает None в первой паре пар KV, а затем не работает во второй паре, потому что None.append (b) терпит неудачу. Вы можете обойти это, указав отдельную функцию:

 def My_Extend(a,b):
      a.extend(b)
      return a

Затем вызовите reduceByKey(lambda a, b: My_Extend(a,b)) (использование лямбда-функции здесь может быть ненужным, но я не проверял этот случай.)

129
задан Jonathan Leffler 25 July 2009 в 06:37
поделиться

2 ответа

Достаточно следующего:

[^ ]

Если вы хотите развернуть это на все, кроме белого пространства (разрывы строк, вкладки, пробелы, жесткие пространства):

[^\s]

или

\S
184
ответ дан Andrew Moore 26 August 2018 в 05:00
поделиться
  • 1
    [^\ ] работал для меня (я избегаю пространства) – Anupam 9 April 2018 в 12:31
  • \s соответствует любому символу пробела
  • \S соответствует любому символу небелого пробела
  • Вы можете сопоставить символ пробела с пробелом character
  • [^ ] соответствует любому символу пробела.

Выберите, что наиболее подходит.

95
ответ дан cletus 26 August 2018 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: