Я пытаюсь преобразовать следующий код, который включает некоторую предварительную обработку кода в код предварительной обработки, использующий панд.
with open(filename, 'r') as csvfile:
# creating a csv reader object
csvreader = csv.reader(csvfile)
# extracting field names through first row
fields = csvreader.next()
# extracting each data row one by one
for row in csvreader:
title.append(row[25])
line = re.sub(r'[.,"!]+', '', row[25], flags=re.MULTILINE) # removes the characters specified
line = re.sub(r'^RT[\s]+', '', line, flags=re.MULTILINE) # removes RT
line = re.sub(r'https?:\/\/.*[\r\n]*', '', line, flags=re.MULTILINE) # remove link
line = re.sub(r'[:]+', '', line, flags=re.MULTILINE)
line=(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", line,flags=re.MULTILINE))
line = filter(lambda x: x in string.printable, line) # filter non-ascii characers
synopses.append(line)
Теперь, используя библиотеку панд.Я перевел приведенный выше код следующим образом:
input_data = pd.read_csv(filename)
input_posts = input_data["Post Data"]
input_posts = input_data["Post Data"].apply(lambda str : re.sub(r'[.,"!]+', '', str, flags=re.MULTILINE))
input_posts = input_data["Post Data"].apply(lambda str : re.sub(r'^RT[\s]+', '', str, flags=re.MULTILINE))
input_posts = input_data["Post Data"].apply(lambda str : re.sub(r'https?:\/\/.*[\r\n]*', '', str, flags=re.MULTILINE))
input_posts = input_data["Post Data"].apply(lambda str : re.sub(r'[:]+', '', str, flags=re.MULTILINE))
input_posts = input_data["Post Data"].apply(lambda str : re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", str,flags=re.MULTILINE))
input_posts = input_data["Post Data"].apply(lambda str : filter(lambda x: x in string.printable, str))
print(input_posts)
Проблема в том, что последний столбец в input_posts
по-прежнему состоит из https://...
URL, хотя я пытался их удалить.Кроме того, я не уверен, что это лучший способ перевести код, используя панд, где я использовал несколько лямбда-функций.Что-то не так в примененном регулярном выражении / или в последовательности, в которой применяется регулярное выражение?
Пример ожидаемого результата:
@ PRNcnsmr: SK-IIпредставляет смелый и нефильтрованный взгляд на красоту благодаря своему первому в истории #BareSkinProject с @ChloeGMoretz https://abc
необходимо удалить ссылку https://abc, чтобы получить
@PRNcnsmr: SK-II представляет смелый и неотразимый взгляд на красоту благодаря своему первому в истории #BareSkinProject с @ ChloeGMoretz