Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以判断一个换行符是否在Python中拆分两个不同的单词?_Python_Newline - Fatal编程技术网

有没有一种方法可以判断一个换行符是否在Python中拆分两个不同的单词?

有没有一种方法可以判断一个换行符是否在Python中拆分两个不同的单词?,python,newline,Python,Newline,使用下面的代码,我将几个带有如下语句的.csv文件导入Python: df = pd.concat((pd.read_csv(f) for f in path), ignore_index=True) 例句: 我想了解一些新餐馆在哪里\N 虽然我没有问题删除由空间包围的换行符,在单词中间,或者在字符串的结尾,我不知道如何处理分隔字符的换行字符。 我想要的输出如下: 目标句: 我想知道哪里有一些新餐馆。 我有没有办法在代码中指出换行符被两个不同的单词包围?或者这是典型的垃圾输入,垃圾输出?在

使用下面的代码,我将几个带有如下语句的.csv文件导入Python:

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

其中,['句子']可以替换为您拥有的任何列名。这似乎并没有回答这个问题-这只会用“句子”值不包含换行符的行来子集我的数据帧。