Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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 使用Regex从TSV文件中删除特殊字符_Python_Regex_File_Csv - Fatal编程技术网

Python 使用Regex从TSV文件中删除特殊字符

Python 使用Regex从TSV文件中删除特殊字符,python,regex,file,csv,Python,Regex,File,Csv,我有一个名为“X.tsv”的文件,我想在将特殊字符(包括双空格)(不包括.Single spaces Tabs/-)导出到python中的子文件之前,使用正则表达式删除它们 我想在下面的代码中实现它 import pandas as pd import csv from itertools import chain, combinations df = pd.read_table('xa.tsv') def all_subsets(ss): return chain(*map(la

我有一个名为“X.tsv”的文件,我想在将特殊字符(包括双空格)(不包括.Single spaces Tabs/-)导出到python中的子文件之前,使用正则表达式删除它们

我想在下面的代码中实现它

import pandas as pd 
import csv
from itertools import chain, combinations 
df = pd.read_table('xa.tsv')
def all_subsets(ss): 
    return chain(*map(lambda x: combinations(ss,x), range(0, len(ss) + 1)))

cols = [x for x in df.columns if not x == 'acm_classification'    if not x== 'publicationId'    if not x== 'publisher'    if not x== 'publication_link'    if not x== 'source'] # Exclude Extra Cols
subsets = all_subsets(cols)
for subset in subsets: 
    if len(subset) > 0: #
        df1 = df[list(subset) + ['acm_classification']]
        df1.to_csv('_'.join(subset) + '.csv', index=False) 

您可以使用
read\u csv()
来帮助加载TSV文件。然后,您可以指定要保留的列,并使用
\t
作为分隔符:

import pandas as pd
import re

def normalise(text):
    text = re.sub('[{}]'.format(re.escape('",$!@#$%^&*()')), ' ', text.strip())  # Remove special characters
    text = re.sub(r'\s+', ' ', text)        # Convert multiple whitespace into a single space
    return text

fieldnames = ['title', 'abstract', 'keywords', 'general_terms', 'acm_classification']
df = pd.read_csv('xa.tsv', delimiter='\t', usecols=fieldnames, dtype='object', na_filter=False)
df = df.applymap(normalise)
print(df)
然后可以使用
df.applymap()
将函数应用于每个单元格,以根据需要对其进行格式化。在本例中,它首先删除任何前导或尾随空格,将多个空格字符转换为单个空格,并删除特殊字符列表


保存之前,可以使用
all_subsets()
函数进一步处理生成的数据帧。

请在问题中添加一个示例TSV文件,并显示生成的输出文件的外观。这是表格,我想删除所有的特殊字符(单空格。-)谢谢。你能扩展你对特殊字符的定义吗?i、 举例说明。@MartinEvans如“,$!@$%^&*()