有没有一种方法可以判断一个换行符是否在Python中拆分两个不同的单词?
使用下面的代码,我将几个带有如下语句的.csv文件导入Python:有没有一种方法可以判断一个换行符是否在Python中拆分两个不同的单词?,python,newline,Python,Newline,使用下面的代码,我将几个带有如下语句的.csv文件导入Python: df = pd.concat((pd.read_csv(f) for f in path), ignore_index=True) 例句: 我想了解一些新餐馆在哪里\N 虽然我没有问题删除由空间包围的换行符,在单词中间,或者在字符串的结尾,我不知道如何处理分隔字符的换行字符。 我想要的输出如下: 目标句: 我想知道哪里有一些新餐馆。 我有没有办法在代码中指出换行符被两个不同的单词包围?或者这是典型的垃圾输入,垃圾输出?在
df = pd.concat((pd.read_csv(f) for f in path), ignore_index=True)
例句:
我想了解一些新餐馆在哪里\N
虽然我没有问题删除由空间包围的换行符,在单词中间,或者在字符串的结尾,我不知道如何处理分隔字符的换行字符。
我想要的输出如下:
目标句:
我想知道哪里有一些新餐馆。
我有没有办法在代码中指出换行符被两个不同的单词包围?或者这是典型的垃圾输入,垃圾输出?在做了一些挖掘之后,我想出了两个解决方案
df = df[~df['Sentence'].str.contains("\n")]
1。软件包:尽管textwrap软件包似乎通常用于视觉格式化(即告诉UI何时显示“…”以表示长字符串),但它成功地识别了\n我遇到问题的模式。尽管仍然有必要删除其他类型的额外空白,但这个软件包让我完成了90%的工作
import textwrap
sample = 'I WANT TO UNDERSTAND WHERE TH\nERE ARE\nSOME \n NEW RESTAURANTS. \n'
sample_wrap = textwrap.wrap(sample)
print(sample_wrap)
'I WANT TO UNDERSTAND WHERE THERE ARE SOME NEW RESTAURANTS. '
2。用于标识不同外观模式的函数:在学习textwrap之前我提出的“煮沸海洋”解决方案,但它不起作用。此函数用于查找定义为由两个单词(字母数字)字符包围的换行符的匹配项。对于所有匹配项,函数将在NLTK的words.words()列表中搜索围绕换行符的每个字符串。如果两个字符串中至少有一个是该列表中的一个单词,则认为它是两个独立的单词
这不考虑必须添加到单词列表中的特定于域的单词,或类似“about”的单词,如果换行符显示为“ab\nout”,则此函数将错误地对这些单词进行分类。出于这个原因,我推荐textwrap,但我还是想和大家分享一下
carriage = re.compile(r'(\n+)')
wordword = re.compile(r'((\w+)\n+(\w+))')
def carriage_return(sentence):
if carriage.search(sentence):
if not wordword.search(sentence):
sentence = re.sub(carriage, '', sentence)
else:
matches = re.findall(wordword, sentence)
for match in matches:
word1 = match[1].lower()
word2 = match[2].lower()
if word1 in wordlist or word2 in wordlist or word1.isdigit() or word2.isdigit():
sentence = sentence.replace(match[0], word1 + ' ' + word2)
else:
sentence = sentence.replace(match[0], word1+word2)
sentence = re.sub(carriage, '', sentence)
display(sentence)
return sentence
其中,['句子']可以替换为您拥有的任何列名。这似乎并没有回答这个问题-这只会用“句子”值不包含换行符的行来子集我的数据帧。