因此,我正在开发一个程序,该程序从csv文件中获取Twitter用户名,并将其插入到下载所有推文的函数中。我几乎已经开始工作了,除了我认为csv行的输出有括号和撇号,['POTUS']
而不是POTUS
,Twitter不接受。
以下是我正在使用的代码:
with open('names.csv') as namescsv:
namereader = csv.reader(namescsv)
for row in namereader:
row = re.sub(r'[^\w=]', '',row)
print row
我用re来尝试删除奇数字符,但是当我执行代码时出现此错误:
File "/home/ian/Desktop/tweepy_scripts/tweetdownloader_allcsv_v2.py", line 66, in <module>
row = re.sub(r'[^\w=]', '',row)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
一些帮助会很棒!我是初学者,我尝试使用以前的文章来解决问题并没有产生太多。
答案 0 :(得分:1)
我认为来自csv的行的输出有括号和撇号,
['POTUS']
而不是POTUS
不,它没有。来自csv模块的行的输出是list
str
s。当您显示列表时(例如,使用print
),它会显示您描述的标点符号。
您可能需要传递该行的单个单元格,而不是将row
传递给Twitter API。第一个单元格称为row[0]
,因此您可能需要:
result = whatever.the.twitter.api.is.called(row[0])
答案 1 :(得分:1)
这是因为你的行变量是一个列表,而不是一个字符串 - 而且Python警告你它需要一个字符串。尝试这样的事情:
import csv
import re
with open('names.csv') as namescsv:
namereader = csv.reader(namescsv)
for row in namereader:
for cell in row:
cell = re.sub(r'[^\w=]', '',cell)
print cell