我在一篇文章中读到并希望删除它的所有标点符号。我的第一个想法是:
data = readlines("text.txt")
data = lowercase.(data)
data = replace.(data, [','], [""])
data = replace.(data, ['.'], [""])
data = replace.(data, ['?'], [""])
data = replace.(data, [';'], [""])
data = replace.(data, ['!'], [""])
data = replace.(data, [':'], [""])
data = replace.(data, ['('], [""])
data = replace.(data, [')'], [""])
这变得非常烦人。我没有找到一种方法将它们全部合并在一个语句中。使用qazxsw poi,我得到了Dimension Mismatch。
有任何想法吗?
如果你不想要一个集合(比如一个数组或一个元组)进行广播,你应该将它包装在一个数组中(在这个例子中,我只使用两个字符replace.(data, [".", ";"], ["", ""])
和,
作为替换,但这可以更多):
;
关键部分是julia> data = ["a,b;c","x,y;z"]
2-element Array{String,1}:
"a,b;c"
"x,y;z"
julia> replace.(data, [[',',';']], "")
2-element Array{String,1}:
"abc"
"xyz"
,它将一组替换替代品包装成一个单元素数组。
另一种方法是使用正则表达式:
[[',',';']]
现在替换模式julia> replace.(data, r"[,;]", "")
2-element Array{String,1}:
"abc"
"xyz"
不需要包装。
如果您关心性能,使用r"[,;]"
的第一个模式会更快一些,但使用正则表达式会更灵活,因为它允许您捕获更复杂的模式。
好像你应该只能使用正则表达式:
[[',',';']]
我没有尝试过,因为我机器上的Julia不足以支持广播函数调用。