我正在解析一个制表符分隔文件,其中第一个元素是推特标签,第二个元素是推文内容。
我的输入文件如下:
#trumpisanabuser of young black men . calling for the execution of the innocent !url "
#centralparkfiv of young black men . calling for the execution of the innocent !url "
#trumppence16 "
#trumppence16 "
#america2that @user "
和我的代码是通过检查第二个tab-sepearted元素是否重复来过滤掉转发的重复内容。
import sys
import csv
tweetfile = sys.argv[1]
tweetset = set()
with open(tweetfile, "rt") as f:
reader = csv.reader(f, delimiter = '\t')
for row in reader:
print("hashtag: " + str(row[0]) + "\t" + "tweet: " + str(row[1]))
row[1] = row[1].replace("\\ n", "").rstrip()
if row[1] in tweetset:
continue
temp = row[1].replace("!url","")
temp = temp.replace("@user","")
temp = "".join([c if c.isalnum() else "" for c in temp])
if temp:
taglines.append(row[0] + "\t" + row[1])
tweetset.add(row[1])
但是,解析很奇怪。当我打印每个解析的项目时,输出如下。任何人都可以解释为什么解析中断并导致打印此行(hashtag: #trumppence16 tweet:
,换行符,然后#trumppence16
)?
hashtag: #centralparkfive tweet: of young black men . calling for the execution of the innocent !url "
hashtag: #trumppence16 tweet:
#trumppence16
hashtag: #america2that tweet: @user "
答案 0 :(得分:1)
推文上有"
行。 CSV可以引用列,引用"
围绕值,包括换行符。从开头"
到下一个结束"
的所有内容都是单个列值。
您可以将quoting
option设置为csv.QUOTE_NONE
:
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)