長い文章(28MB)の通常の文章があります。 TNT、USA、OMGなど大文字で書かれたすべての単語を削除したい。Python - 長い文字列から大文字の単語を削除する
だから、一文に含まから:
Jump over TNT in There.
私が取得したいと思います:
Jump over in There.
は、どのような方法は、リストとitereateにテキストを分割せずにそれを行う方法、ありますか?何とか正規表現を使用することは可能ですか?
長い文章(28MB)の通常の文章があります。 TNT、USA、OMGなど大文字で書かれたすべての単語を削除したい。Python - 長い文字列から大文字の単語を削除する
だから、一文に含まから:
Jump over TNT in There.
私が取得したいと思います:
Jump over in There.
は、どのような方法は、リストとitereateにテキストを分割せずにそれを行う方法、ありますか?何とか正規表現を使用することは可能ですか?
あなたは[A-Z]
は、ワード境界\b
で撮影大文字のセットを使用することができます。
import re
line = 'Jump over TNT in There NOW'
m = re.sub(r'\b[A-Z]+\b', '', line)
#'Jump over in There '
を
私はこのようなものだろう:
import string
def onlyUpper(word):
for c in word:
if not c.isupper():
return False
return True
s = "Jump over TNT in There."
for char in string.punctuation:
s = s.replace(char, ' ')
words = s.split()
good_words = []
for w in words:
if not onlyUpper(w):
good_words.append(w)
result = ""
for w in good_words:
result = result + w + " "
print result
モジュールre
を使用して、
import re
line = 'Jump over TNT in There.'
new_line = re.sub(r'[A-Z]+(?![a-z])', '', line)
print(new_line)
# Output
Jump over in There.
なぜ文字列を分割したくないのですか? –
@jmetz私が知っている解決策は最適ではない(そして些細なので)何も試していません。私は「再」の文書を見ましたが、それは私のために複雑です - 私はいつも私が望むものを達成する方法を見つけるのに苦労します。 @TinoA。 – matousc
私の経験では、長い文字列を分割してそれを反復すると、 're'の使用よりも時間がかかります(しかし、おそらく私は間違っています) – matousc