预处理(rstrip和正则表达式以及更简单的代码)

时间:2016-02-09 04:25:30

标签: python regex

我试图读取200个txt文件并进行一些预处理。

1)我怎样才能编写更简单的代码而不是为每个txt文件编写相同的代码?

2)我可以将正则表达式与rstrip结合使用吗?

- >主要是,我想摆脱" \ n"但有时他们会坚持使用其他字母。所以我想要的是删除每个\ n以及与\ n结合的单词(即" \ n?","!\ n&# 34; ..等等)

3)在最后一行,有没有办法在一个列表中添加更简单的代码?

data = open("job (0).txt", 'r').read()
rows0 = data.split(" ")
rows0 = [item.rstrip('\n?, \n') for item in rows0]

data = open("job (1).txt", 'r').read()
rows1 = data.split(" ")
rows1 = [item.rstrip('\n?, \n') for item in rows1]

.....(最多200个文件)

data = open("job (199).txt", 'r').read()
rows199 = data.split(" ")
rows199 = [item.rstrip('\n?, \n') for item in rows199]

ds_l = rows0 + rows1 + ... rows199

1 个答案:

答案 0 :(得分:0)

首先,我不是蟒蛇专家。但是因为这个问题已经存在了一段时间......(至少如果没有人看到这个,我可以从downvotes中拯救^^)

1)使用循环,并阅读编程教程。 请参阅此帖子How do I read a file line-by-line into a list?,了解如何获取所有行的列表。然后你可以遍历列表。

2)不知道是否可以使用条带的正则表达式,这使我来到这里,所以告诉我你是否发现了。

目前尚不清楚你究竟要求的是什么,你想要摆脱包含任何“/ n”的所有(空格分隔)单词,还是只剪掉“/ n”,“/ n?”, ......部分词?

在第一种情况下,一个简单,不优雅的解决方案是在行上和行中的所有单词上放置两个循环并执行类似

的操作

# loop over rows with i as index row = rows[i].split(" ") for j in range len(row): if("/n" in row[j]) del row[j] rows[i] = " ".join(row)

在后一种情况下,如果你想删除的表达式不是很多,你可能会以某种方式使用re.sub()。谷歌帮忙;)

3)如果您将行作为字符串的“行”列表,则可以使用join:

ds_1 = "".join(rows)

(对于加入:Python join: why is it string.join(list) instead of list.join(string)?