[英]how to remove the empty quotes from the list using python?
我有一个 python 脚本,可以在进行文本分析之前对文本进行预处理。 一些清理文本的功能是:
问题是第一个函数返回一个列表,第二个函数获取返回的列表并返回一个列表,因此它成为列表内的列表。 像这样:
['[', "'الموضوع", "'", ',', "'إجتماع", "'", ',', "'بين", "'", ',',
"'الجنة", "'", ',', "'البحرية", "'", ',', "'الفرعية", "'", ',',]']
结果必须是这样的:
['الموضوع', 'إجتماع', 'بين', 'الجنة', 'البحرية', 'الفرعية',]
移除停用词的返回结果:
['ا', 'ل', 'م', 'و', 'ض', 'و', 'ع', ' ', 'إ', 'ج', 'ت', 'م', 'ا', 'ع', ' ', 'ب', 'ي', 'ن', ' ', 'ا', 'ل', 'ج', 'ن', 'ة', ' ', 'ا', 'ل', 'ب', 'ح', 'ر', 'ي', 'ة', ' ', 'ا', 'ل', 'ف', 'ر', 'ع', 'ي', 'ة', ' ', 'و', 'ن', 'ظ', 'ي', 'ر', 'ت', 'ه', 'ا', ' ', 'ف', 'ي', ' ', 'م', 'ب', 'س', 'و', 'ط', ' ', 'ا', 'ل', 'م', 'س', 'ت', 'ن', 'د', ' ', 'ب', 'ر', 'ق', 'ي', 'ة', ' ', 'ر', 'ق', 'م', ' ', '1', '7', '1', 'ع', ' ', 'ت', 'ا', 'ر', 'ي', 'خ', ' ', '1', '2', '1', ]
结果必须是:
['تاريخ', '1212019','الموضوع', 'إجتماع', 'بين', 'الجنة', 'البحرية', 'الفرعية',]
def remove_1char(text):
tokens = text.split()
tokens = [word for word in tokens if len(word) > 1]
result = str(tokens)
write_file("remove_1char.txt",result)
return result
def tokenize_text(text):
tokens=word_tokenize(text)
write_file("tokenize_text.txt",tokens)
return tokens
def remove_stopwords(tokens):
write_file("tokens_before_remove.txt",tokens)
stop_word_list = set(stopwords.words('arabic'))
clean_tokens= [tok for tok in tokens if tok not in stop_word_list]
write_file("remove_stop_word.txt",clean_tokens)
return clean_tokens
def clean_text(text):
rmws = remove_whiteSpace(text)
rmp = remove_punctuations(rmws)
rmd = remove_diacritics(rmp)
rmrc = remove_repeating_char(rmd)
rm1c = remove_1char(rmrc)
clean_tokens = remove_stopwords(rm1c)
write_file("result.txt",clean_tokens)
return clean_tokens
那么如何解决这个问题呢?
让我们打开一个 Python REPL 并检查您的代码。
我假设第一行指定了输入字符串,将其分配给一个变量。
>>> l = ['الموضوع', 'إجتماع', 'بين', 'الجنة', 'البحرية', 'الفرعية',]
>>> l
['الموضوع', 'إجتماع', 'بين', 'الجنة', 'البحرية', 'الفرعية']
您没有指定调用哪个函数,但我假设您首先为每个输入字符串调用函数remove_1char
。 我们将依次调用函数的行以查看列表中第一项的结果,我们将其称为text
。
>>> text = l[0]
>>> tokens = text.split()
>>> tokens
>>> ['الموضوع']
由于输入序列中的每个词都由一个词组成,因此输出符合预期。
>>> tokens = [word for word in tokens if len(word) > 1]
>>> tokens
['الموضوع']
并且所有单词都有超过 1 个字符。 也符合预期。
>>> result = str(tokens)
>>> result
"['الموضوع']"
>>>
在这一行中,列表的字符串表示被分配给结果。 这可能不是你想要的。 我认为您想将令牌连接到单个字符串。 这可以通过join
函数来完成。
>>> result = ' '.join(tokens)
>>> result
'الموضوع'
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.