두 개의 파일이 있습니다. 하나의 파일에서 정규 표현식을 찾고 두 번째 파일의 문자열로 대체합니다. 첫 번째 파일은 세 번째 인덱스에 문자열이 들어있는 .csv 파일입니다. 인덱스 0-2는 데이터에 추가되었습니다. 파일 1에서Python의 특정 인덱스에서 시작하는 정규 표현식을 수행하는 방법
문자열은 다음과 같습니다 : 파일 2에서
"foo http://abc bar http://123."
...
...
, 그냥 FILE1에있는 사람을 대체하기위한 것입니다 URL의 목록이 있습니다.
파일 2는 다음과 같습니다
"http://def"
"http://456"
...
...
나는 URL을 찾고, 파일 1을 반복하여 시작합니다. URL을 찾으면 파일 2의 URL로 바꾼 다음 다음 URL로 이동합니다. 이 모든 순서로 수행되기 때문에 파일의 URL의 교체시 파일 2로부터 URL의 반복되지 않습니다 1.
구문 분석 후 결과 문자열은 다음과 같이한다 완료 :
이"foo http://def bar http://456"
내 문제가 re.sub를 사용하여 대체를 수행 할 때 첫 번째 URL 또는 두 URL을 동시에 파일 2의 동일한 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()
다음은 일치가 발견되는 경우 "인쇄 지수"말해,하지만 난 대체이 수행해야하는 위치 지정을 활용하는 방법을 잘 모르겠어요 .
도움 주셔서 감사합니다. 난 당신이 원하는 것을 할 것이라고 생각