如何刪除撇號,雙引號,逗號等所有單詞,不包括像它是什麼,什麼是等字。句子中必須有句號和句號之間的空格。如何不刪除撇號文本文件中的某些單詞的撇號
例如
輸入句子:
"'This has punctuation, and it's hard to remove. ?"
所需的輸出句子:
This has punctuation and it's hard to remove .
如何刪除撇號,雙引號,逗號等所有單詞,不包括像它是什麼,什麼是等字。句子中必須有句號和句號之間的空格。如何不刪除撇號文本文件中的某些單詞的撇號
例如
輸入句子:
"'This has punctuation, and it's hard to remove. ?"
所需的輸出句子:
This has punctuation and it's hard to remove .
我提出這樣的代碼:
import re
sentences = [""""'This has punctuation, and it's hard to remove. ?" """,
"Did you see Cress' haircut?.",
"This 'thing' hasn't a really bad habit, you know?.",
"'I bought this for $30 from Best Buy it's. What a waste of money! The ear gels are 'comfortable at first, but what's after an hour."]
for s in sentences:
# Remove the specified characters
new_s = re.sub(r"""["?,$!]|'(?!(?<! ')[ts])""", "", s)
# Deal with the final dot
new_s = re.sub(r"\.", " .", new_s)
print(new_s)
輸出:
This has punctuation and it's hard to remove .
Did you see Cress haircut .
This thing hasn't a really bad habit you know .
I bought this for 30 from Best Buy it's . What a waste of money The ear gels are comfortable at first but what's after an hour .
正則表達式:
["?,$!] # Match " ? , $ or !
| # OR
' # A ' if it does not have...
(?!
(?<! ')
[ts] # t or s after it, provided it has no ` '` before the t or s
)
謝謝@傑裏,但如何刪除撇號下面的話Cress'= Cress – user3232688
@ user3232688哦,哎呀。不知何故,我認爲它應該保持。給我幾分鐘來解決這個問題。好的,改變了。 – Jerry
非常感謝你@Jerry – user3232688
使用用於外部引號
像這樣string.strip(定界符)函數:
output = chaine.strip("\"")
請注意,您必須使用'\'(如',',\,等等)來轉義某些字符。或者你可以輸入他們爲''「,'''(不確定)。
編輯:mmh,沒有考慮撇號,如果唯一的問題是撇號,你可以先解開它,然後手動解析它用for語句,找到找到的第一個撇號的指示符,然後如果後跟一個's',就把它留下,我不知道,你必須在編碼之前設置詞彙/語義規則。
編輯2: 如果該字符串只是一個句子,總是在最後一個點,總是需要的空間,然後在最後使用:
chaine[:-2]+" "+chaine[-2:]
'strip'只能用於去除前導和尾隨字符。 – timgeb
編輯我的答案,但不知道引號是否是輸入的一部分,我認爲是這樣,因爲他們沒有在期望的輸出。 – PhilDenfer
使用負查找behin d
(?<!\w)["'?]|,(?=)
除去匹配'"?
字符通過re.sub
。
而且你的代碼會是這樣,
>>> s = '\"\'This has punctuation, and it\'s hard to remove. ?\" '
>>> m = re.sub(r'(?<!\w)[\"\'\?]|,(?=)', r'', s)
>>> m
"This has punctuation and it's hard to remove. "
使用此:
(?<![tT](?=.[sS]))["'?:;,.]
如果你也想在一行的末尾離開期間(只要它前面有一個空格):
(?<![tT](?=.[sS]))(?<! (?=.$))["'?:;,.]
僅供參考,它是正確的比它聽起來有點複雜,這就是爲什麼我的正則表達式更長一點。增加了第二個版本,離開了(如果前面有一個空格) – zx81
我想這是,刪除所有在任何一個單詞結尾的引文。因此從單詞分割句子字(由白色空間隔開)並去掉任何前導或尾隨引號
>>> ''.join(e.strip(string.punctuation) for e in re.split("(\s)",st))
"This has punctuation and it's hard to remove "
仍然有'標點符號',OP想要刪除',' –
@PadraicCunningham:我最初展示了這個方法,你想要剝離什麼,你需要添加一個明確的列表,在這個特定的情況下,我已經包含'string.punctuation' – Abhijit
@Ahhijit如何保持文件末尾的單詞和句點之間的空格,並且可以讓我知道輸入句子是否類似下面。「'我買了這個從Best Buy購買30美元。多浪費錢!耳朵一開始很舒服,但一小時後會怎樣?所需的輸出必須如下:我從百思買那裏購買了30張。 浪費金錢耳朵一開始很舒服,但一小時左右後,耳朵開始真的受到傷害。 – user3232688
請問您能否提供更多的例子並且更清楚地定義'etc'? – Jerry
如果我有像下面的例子這樣的句子,我想刪除所有標點符號,除了這樣的單詞之外,單詞和句尾之間有什麼和需要空格。 INPUT File:「'我從Best Buy購買了30美元這是什麼 什麼是浪費金錢!耳朵凝膠首先是舒適的,但一小時後會怎麼樣 期望的輸出:我從百思買買了它30 浪費金錢耳朵凝膠起初很舒服,但是一小時後會怎麼樣 – user3232688
你可以把它放在你的問題中,並適當地設置它的格式嗎?有些邊緣情況你可能沒有考慮過:如果你有'你有沒有見Cress的髮型嗎?「這個'東西'有一個非常不好的習慣,你知道嗎?'那些成爲什麼? – Jerry