Regex 在Python3中从命令行输入中删除带有数字和字母的单词:错误

Regex 在Python3中从命令行输入中删除带有数字和字母的单词:错误,regex,python-3.x,Regex,Python 3.x,我无法让正则表达式删除包含数字和字母的单词。我不断收到“TypeError:预期的字符串或缓冲区”,非常感谢您提供的任何帮助 $ testing abc sorted_word = re.sub("\S+\d\S+", "", word_sort).strip() File "/usr/lib64/python2.6/re.py", line 151, in sub return _compile(pattern, 0).sub(repl, string, count) TypeEr

我无法让正则表达式删除包含数字和字母的单词。我不断收到“TypeError:预期的字符串或缓冲区”,非常感谢您提供的任何帮助

$ testing abc
sorted_word = re.sub("\S+\d\S+", "", word_sort).strip()
  File "/usr/lib64/python2.6/re.py", line 151, in sub
    return _compile(pattern, 0).sub(repl, string, count)
TypeError: expected string or buffer

#! /usr/bin/env python
import os
import sys
import re


in_list = sys.argv

def word_sort(in_list):
    word_sort = " 1a "
    word_sort = sorted(in_list[1:], key=len)
    for i in word_sort:
        punctuation = '.',',',';','!',' / ','"','?' #strips punctuation from words
        if i in punctuation: #removes punctuation
            word_sort = word_sort.replace(i," ")
    word_sort= sorted(word_sort, key=lambda L: (L.lower(), L))
    sorted_word = " 1a "
    sorted_word = re.sub("\S+\d\S+", "", word_sort).strip()
    return sorted_word

print (word_sort(in_list))
这:

word\u sort=sorted(word\u sort,key=lambda L:(L.lower(),L))

遍历
word\u sort
字符串,但不创建
str
对象,只创建排序字符的
列表,因此
re
模块会阻塞它

您必须再次连接字符才能重新组合字符串:

word_sort= "".join(sorted(word_sort, key=lambda L: (L.lower(), L)))
小型测试仪:

>>> sorted("dcba")
['a', 'b', 'c', 'd']
>>> "".join(sorted("dcba"))
'abcd'
顺便说一句:应该避免使用相同名称调用函数和局部变量
word\u sort
。这很难读。幸运的是,您没有递归调用函数:)