在main.py
中,我有这个
import RemoveShortWords as rs
procLine="the in shear flow past a flat plate"
procLine = rs.RemomeOneTwoCharWords(procLine)
print(procLine)
和RemoveShortWords.py
是这个
def RemomeOneTwoCharWords(procLine):
procLine = str(procLine)
for word in procLine.split():
if(len(word)<=2):
procLine = procLine.replace(word,"")
return procLine
print返回此
如您所见,纯粹的流量pst flt plte
该功能删除了少于2个字符的单词。 但是,由于某种原因,它也删除了所有“ a”字符。例如,“ flat”变成“ flt”
为什么?
答案 0 :(得分:6)
变量procLine
具有the in shear flow past a flat plate
还有procLine.split()
['the','in','shear','flow','past','a','flat','plate']
在for
循环中,它找到a
并将a
中的procLine
替换为空或删除字符。 注意:如果某个单词与in
相同,例如string
至strg
。
相反,我建议使用类似list comprehension
的方法:
procLine = ' '.join([w for w in procLine.split() if len(w)>2])
答案 1 :(得分:3)
super.string
替换所有事件。
str.replace(old,new [,count])
返回该字符串的副本,其中所有出现的子字符串old都被new替换。如果指定了可选的参数count,则仅替换第一个出现的计数。
因此,一旦输入中到达单词“ a”,replace
将删除整个字符串中的所有“ a”。如果您只想替换少于2个字符的单词,则可以使用例如list-comprehension:
procLine.replace("a", "")
答案 2 :(得分:0)
我认为让您感到困惑的一件事是 procLine.split() 实际上并没有修改 procLine。
def RemomeOneTwoCharWords(procLine):
procLine = str(procLine)
temp = ""
for word in procLine.split():
if len(word)>=2:
temp += word + " "
return(temp)
procLine="the in shear flow past a flat plate"
procLine = RemomeOneTwoCharWords(procLine)
print(procLine)
给予
the shear flow past flat plate