Regex 在Python3中从命令行输入中删除带有数字和字母的单词:错误
我无法让正则表达式删除包含数字和字母的单词。我不断收到“TypeError:预期的字符串或缓冲区”,非常感谢您提供的任何帮助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
$ 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
。这很难读。幸运的是,您没有递归调用函数:)