-2

我编写了一个小脚本来检查并删除哈希标记和所有整数字符串。下面,是数据:

Test #456
Test #783
Test #990
Test #123
Test #560
Test #983
Test #195

数据采用 CSV 格式,我正在尝试将结果迁移到另一个 CSV(尽管我愿意接受更好的想法)。这是我写的代码:

reader = open('testin.csv', "r")
lines = reader.read().split('#'[0].rstrip() + '/n')
reader.close()

writer = open('testout.csv', "w")
for line in set(lines):
    writer.write(line + "\n")
writer.close()

print "Complete"

该脚本只是移动数据不变。

4

2 回答 2

0

我认为您想要以下内容:

with open('testin.csv) as inf, open('testout.csv', 'w') as outf:
    for line in inf:
         parts = line.split('#')
         leftpart = parts[0].rstrip()
         outf.write(leftpart + '\n')

您必须拆分每一行,而不是整个文件。您还必须对拆分结果取 [0],而不是传递给它的“#”,因为“#”[0] 只是“#”。你想调用 rstrip 的结果。如果写在一行上太复杂,就写多行。

这可能不是您想要的,因为您一直在谈论每行有多个值的 CSV 文件,并且您还谈论解析整数而不是忽略它们。所以也许你想要这个:

import csv
with open('testin.csv) as inf, open('testout.csv', 'w') as outf:
    w = csv.writer(outf)
    for line in inf:
         parts = line.split('#')
         leftpart = parts[0].rstrip()
         rightpart = parts[1].rstrip()
         intvalue = int(rightpart)
         # do something with intvalue?
         w.writerow(leftpart, str(intvalue))

这有点傻——我只是解析整数以将其转回相同的字符串,最终你可以通过将每个“#”替换为“,”来做同样的事情。但它希望能让您了解如何编写您实际尝试编写的任何代码。

于 2013-10-15T06:04:15.137 回答
0

只需使用正则表达式替换:

import re

with open('testin.csv', 'r') as reader:
    lines = [re.sub(r' *#\d+', '', line.strip()) for line in reader]

with open('testout.csv', 'w') as writer:
    writer.write('\n'.join(lines))
于 2013-10-15T03:43:53.007 回答