Я пытаюсь запустить следующий код в своей командной строке. Мне нужно добавить парсер аргументов для моего аргумента * argv в моей функции Splitter. Когда я пытаюсь запустить код следующим образом, я получаю сообщение об ошибке: TypeError: splitter () получил неожиданный аргумент ключевого слова '* argv'.
Мне интересно, есть ли более правильный способ добавить такой тип аргумент? Цель аргумента - позволить людям, использующим функцию, добавлять аргументы из 0-inf для * argv, и я знаю, что он работает так, как я хочу. Я просто не знаю, как разбирать аргумент.
import pandas as pd
import numpy as np
import argparse
def arg_parse():
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--input_file", required = True)
parser.add_argument("-s", "--sep", required=True,)
parser.add_argument("-t", "--target_col", required=True)
parser.add_argument("-n", "--new_col", required = False, default = None)
parser.add_argument("-a", "--*argv", required = False, default = None)
args=parser.parse_args()
return vars(args)
def splitter(input_file, target_col, sep, new_col = None, *argv):
df = pd.read_csv(input_file)
df[target_col] = df[target_col].str.split(sep)
exploded = df.explode(target_col)
exploded[target_col].replace(r'^\s*$', np.nan, regex=True, inplace = True)
exploded.dropna(subset=[target_col], inplace=True)
if new_col == None:
return(pd.DataFrame(exploded[[target_col,*argv]]))
else:
exploded[new_col] = exploded[target_col]
return(pd.DataFrame(exploded[[new_col,*argv]]))
if __name__ == '__main__':
args = arg_parse()
print(splitter(**args))