2017-10-02 11 views
2

私はPythonコードを持っていますが、.txtファイルに書きたいものですが、(構造のために)フォーマットエラーが発生します。この出力を正しい形式で行うにはどうすればよいでしょうか?私は#を使用して "文字列"部分の開始と終了を確認しました。私が試したものをここでPythonで.txtファイルにコードを書き込む方法は?

#!/usr/bin/python 
#!/bin/sh 
# -*- coding: utf-8 -*- 
from bs4 import BeautifulSoup 
from selenium import webdriver 
import urllib2 
import subprocess 
import unicodecsv as csv 
import os 
import sys 
import io 

array = ['link1', 'link2', 'link3'] 

string = #MY STRING IS START HERE 
("browser = webdriver.Firefox() 
datatable=[] 
    browser.get('%s') WebDriverWait(browser, 5).until(lambda s: s.execute_script("return jQuery.active==0")) 
time.sleep(5) 
html = browser.page_source 
soup=BeautifulSoup(html,"html.parser") 
\n") 
#AND MY STRING END HERE 

file="/Users/Adam/Desktop/data.txt" 

with open(file, "w") as f: 
    for i in array: 
     f.write(string % i) 

f.close() 

EDIT:

string2= """query = """ load data local infile '/usr/src/Python-2.7.13/output.csv' 
into table ARRIVALS 
fields terminated by ';' 
enclosed by '"' 
lines terminated by '\n' 
ignore 1 lines; 
""" """ 

答えて

3

複数の行の上に文字列を書き込むためには、あなたではなく、単一のもので、トリプル引用符を使用する必要があります。

string = #MY STRING IS START HERE 
("browser = webdriver.Firefox() 
datatable=[] 
    browser.get('%s') WebDriverWait(browser, 5).until(lambda s: s.execute_script("return jQuery.active==0")) 
time.sleep(5) 
html = browser.page_source 
soup=BeautifulSoup(html,"html.parser") 
\n") 

を、それは文字列をこのように読むことができないので:

私の推測では、あなたのコードはここに壊れるということです。

string = """browser = webdriver.Firefox() 
datatable=[] 
browser.get('%s') WebDriverWait(browser, 5).until(lambda s: s.execute_script("return jQuery.active==0")) 
time.sleep(5) 
html = browser.page_source 
soup=BeautifulSoup(html,"html.parser") 
\n""") 

を使用すると、問題を修正する必要があります。

編集された質問の場合:文字列の二重引用符をエスケープコードに置き換える必要があります。複数行コメントは、「 "" によって達成され得るように

ので、代わりに

string = """ some text """ here """ """ 

のあなたは

string = """ some text \"\"\" here \"\"\" """ 
+0

ああ動作していますが、私のコードでMYSQLの部分を持っていれば何ができますか? "私は自分の質問を編集し、あなたはそれを見ることができます。 – Harley

+0

素晴らしいです、ありがとうございます! – Harley

0

を使用する必要があります使用することができます。

string = """("browser = webdriver.Firefox() 
datatable=[] 
browser.get('%s') WebDriverWait(browser, 5).until(lambda s: s.execute_script("return jQuery.active==0")) 
time.sleep(5) 
html = browser.page_source 
soup=BeautifulSoup(html,"html.parser") 
\n")""" 

を単一引用符を使用します:

string = '''"""query = """ load data local infile '/usr/src/Python-2.7.13/output.csv' 
into table ARRIVALS 
fields terminated by ';' 
enclosed by '"' 
lines terminated by '\n' 
ignore 1 lines; 
"""''' 
+0

しかし、私のコードにMYSQLの部分がある場合はどうしたらいいですか? "" - これが壊れています!私の質問を編集しています。 – Harley

+0

また、シングルクォート以下に示すような複数行のコメントの場合: – arajshree

関連する問題