我有两个文件,一个文件我通过解析寻找正则表达式来替换第二个文件中的字符串。第一个文件是一个.csv文件,它在第三个索引处包含字符串。索引0-2刚刚添加到数据上。在
文件1中的字符串如下所示:
"foo http://abc bar http://123."
...
...
在文件2中,只有一个URL列表,用来替换在file1中找到的URL。在
文件2如下所示:
^{2}$我开始遍历文件1,查找URL,当我找到一个URL时,我用文件2中的URL替换它,然后转到下一个URL。这些都是按顺序完成的,因此在替换文件1中的URL时,不会重复来自文件2的URL。在
解析完成后生成的字符串应如下所示:
"foo http://def bar http://456"
我的问题是,当使用re.sub公司要执行替换,我只能用文件2中的同一个URL替换第一个URL或同时替换这两个URL。例如,我的字符串最终如下所示:
"foo http://def bar http://def"
有什么方法我可以用吗re.sub公司要替换第一个URL,然后跟踪它在字符串中的位置,这样当它碰到第二个URL时,它会用文件2中对应的URL替换它?在
我写的代码如下:
shortened = open('shortenedURLs.txt','r')
linesReadfromFile = shortened.readlines()
newRetweet = open('new_Retweet.csv','w')
with open('tweets_nurl.csv','rb') as inputfile1:
read=csv.reader(inputfile1, delimiter=',')
a = 0
for row in read:
url = re.findall('https*://', row[3])
if url:
for i in xrange(len(url)):
currentLine=row[3].rstrip('\n')
if re.search('http://', row[3]):
iter = re.finditer(r'http://',row[3])
indices = [m.start(0) for m in iter]
print indices
currentLine=re.sub(r'http://[^\s]*', linesReadfromFile[a].rstrip('\n'), currentLine, count=1)
a=a+1
if re.search('https://',row[3]):
currentLine = re.sub(r'https://[^\s]*', linesReadfromFile[a].rstrip('\n'), currentLine)
a=a+1
newRetweet.write(row[0]+","+row[1]+","+row[2]+","+currentLine+'\n')
else:
newRetweet.write(','.join(row)+'\n')
shortened.close()
newRetweet.close()
“print index”告诉我在哪里找到匹配项,但是我不确定如何利用它们来指定应该在哪里进行替换。在
谢谢你的帮助!在
我想我会做你想做的。。。在
因为函数是一行,你可以很容易地用lambda替换它。。。我只是用一个普通的方法来说明问题
相关问题 更多 >
编程相关推荐