Функция разделения внутри функции в состоянии ИСКРЫ и проверки

#python #apache-spark #pyspark #bigdata #databricks

Вопрос:

Я использую следующий код

 def process_row(row):
items = row.replace('"', '')
items2 = items.split(' ')
for x in items2:
  items2.append(x.replace('-', '0'))
return [string(items[0]), string(items[1]), string(items[2]),
        string(items[3]), string(items[4]), int(items[5])]

nasa = (
nasa_raw.map(process_row)
)
        
for row in nasa.take(5):
print(row)
 

поверх текстового файла :

in24.inetnebr.com [01/Aug/1995:00:00:01] "GET /shuttle/missions/sts-68/news/sts-68-mcc-05.txt" 200 1839 uplherc.upl.com [01/Aug/1995:00:00:07] "GET /" 304 0 uplherc.upl.com [01/Aug/1995:00:00:08] "GET /images/ksclogo-medium.gif" 304 0 uplherc.upl.com [01/Aug/1995:00:00:08] "GET /images/MOSAIC-logosmall.gif" 304 0 uplherc.upl.com [01/Aug/1995:00:00:08] "GET /images/USA-logosmall.gif" 304 0 ix-esc-ca2-07.ix.netcom.com [01/Aug/1995:00:00:09] "GET /images/launch-logo.gif" 200 1713 uplherc.upl.com [01/Aug/1995:00:00:10] "GET /images/WORLD-logosmall.gif" 304 0 slppp6.intermind.net [01/Aug/1995:00:00:10] "GET /history/skylab/skylab.html" 200 1687 piweba4y.prodigy.com [01/Aug/1995:00:00:10] "GET /images/launchmedium.gif" 200 11853 slppp6.intermind.net [01/Aug/1995:00:00:11] "GET /history/skylab/skylab-small.gif" 200 9202

Я вижу, что моя функция замены работает, и кавычки заменяются пробелами. Функция разделения, похоже, не работает, потому что результатом должен быть один токен для каждой строки, но это не мой результат.

Чего-нибудь мне здесь не хватает?

Ответ №1:

regexp_replace можно использовать для замены последнего - в строке:

 df.select(F.regexp_replace(<column name>, "-$", "0")).show(truncate=False)