我有一个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()
编辑:
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;
""" """
答案 0 :(得分: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 \"\"\" """
答案 1 :(得分: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;
"""'''