python - 创建用于将非字母数字字符转换为破折号的 Python 类

标签 python python-3.x

我正在尝试在 Python 中创建一个类,将非字母数字字符转换为字符串列表的破折号。

例如,我们有以下列表:inventory_list_1 = ['ABCDE : CE ;客户:帐号;新销售', 'JKLEH : SC ;客户:记录编号;老销售']

我们希望最终结果为:inventory_list_2 = ['ABCDE-CE-CUSTOMER-AccountNumber-NewSales', 'JKLEH-SC-CLIENT-RecordNumber-oldSales']

我尝试创建以下类,但没有成功。如何创建一个 Python 类来将非字母数字字符转换为字符串列表的破折号?如何执行该类将 inventory_list_1 转换为 inventory_list_2

class clean_data:
    def __init__(self, list):
        self.list = list
    def transform_data(self):
        for string_item in self.list:
            return re.sub('[^0-9a-zA-Z]+', '-', string_item)

打印(clean_data(inventory_list_1))

最佳答案

任何函数只能执行一次 return 语句。在您的方法中,您尝试遍历所有列表项,然后返回每个修改的项目。但如上所述,只会执行一个 return 语句,因此仅返回第一个修改的元素而不是整个列表。

要返回所有修改的元素,请创建一个附加所有修改的元素的新列表,然后从函数返回新列表。

def class clean_data:
    def __init__(self, list1):
         self.list1 = list1
    def transform_data(self):
         retList =[]
         for string_item in self.list1:
             retList.append(re.sub('[^0-9a-zA-Z]+', '-', string_item))
    return(retList)

inventory_list_1 = ['ABCDE : CE ; CUSTOMER : Account Number; New Sales', 'JKLEH : SC ; CLIENT : Record Number; old Sales']
print (clean_data(inventory_list_1).transform_data())

关于python - 创建用于将非字母数字字符转换为破折号的 Python 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58046236/

相关文章:

Python3错误的字符串编码

python - Django shell 中的奇怪字符,箭头键不起作用

python - 如何使用 Beautifulsoup4 抓取属性中未指定类或 id 的 HTML 元素

Python 单元测试覆盖模块级函数

python - sqlalchemy:获取值不存在的ID

python - Discord Bot 只能看到自己,不能看到公会中的其他用户

Python-Django 时区无法正常工作

python - 使用 petl 将字符串转换为元组

python - 为多列绘制 seaborn catplots

python - '~'(波浪号)运算符在Python中的应用