Python - 通过字符串打印的变量

时间:2014-03-11 12:11:25

标签: python string variables

我正在使用python 2.7并且我遇到了一个我以前没有遇到的问题,当我打印某个字符串然后在同一行上的变量时,变量被打印在字符串上。例如脚本编码如此print 'IP Rating = ', ipRating,命令提示符中的输出将为'IP20ating = '。我不知道为什么会发生这种情况,但我在相同的脚本中有各种变量和字符串相同的代码,它们都按预期出现,我已经尝试重命名变量并更改字符串但仍然没有区别,有任何人之前遇到此错误或有任何想法可能会发生这种情况?我可以根据要求发布代码。 非常感谢:))

修改 这是代码 - 我知道我可能已经重复了几次,并且那里有不必要的库,但我的工作方式是导入我可能需要的所有库,然后在最后删除不必要的代码。

from bs4 import BeautifulSoup as Soup
from bs4 import BeautifulSoup
from urllib import urlopen
import webbrowser
import httplib
import urllib2
import urllib
import string
import mylib
import xlrd
import glob
import xlwt
import bs4
import sys
import os
import re

print '\nStarting Web Search'
found = False
while found == False:
    excelFile = "F:\\len\\web sheets completed\\csv formatted\\imported\\re-imported\\Import Corrections\\saxby web spreadsheet.xls"
    try:
        inFi = xlrd.open_workbook(excelFile)
        found = True
    except IOError: 
        print 'File not found.' 
inFi = xlrd.open_workbook(excelFile)
inWS = inFi.sheet_by_index(0)
headers = mylib.getHeader(inWS)
supplyHead = mylib.findHeader('Supplier Part Ref', headers)
saxbeginurl = "http://www.saxbylighting.com/index.php?pg=search&ser="
badLink = "index.php?pg=search&ser=10180&next=0"
resLink = "http://www.saxbylighting.com/images/ProductImages/Zoomed/"
overCount = 0
for t in range(524,534):
    projection = 0
    ipRating = 0
    diameter = 0
    width = 0
    weight = 0
    length = 0
    height = 0
    i = 0
    w = 0
    l = 0
    h = 0
    d = 0
    p = 0
    x = 0
    iP = 0
    wei = 0
    imgStock = str(inWS.cell(t, supplyHead).value.encode('latin-1'))
    overCount = overCount + 1
    print '\n',imgStock
    if imgStock == '3TRAWI':
        url = 'http://www.saxbylighting.com/index.php?pg=details&prod=53'
    elif imgStock == '10313':
        url = 'http://www.saxbylighting.com/index.php?pg=details&prod=204'
    else:
        url = saxbeginurl + imgStock
    html_page = urllib2.urlopen(url)
    soup = BeautifulSoup(html_page)
    img_tags = soup.find_all("img")
    the_image_tag = soup.find("img", src='/images/dhl_logo.png')
    try:
        for dataSheet in soup.find('div',{'class':'panes'}):
            #print dataSheet, ' -- ', str(i)
            i = i + 1
            if i == 4:
                reqData = str(dataSheet).split('<img', 1)[0]
                first_Data = reqData.replace('<br/>','\n')
                second_Data = first_Data.replace('<b>','')
                third_Data = second_Data.replace('</b>','')
                fourth_Data = third_Data.replace(':',': ')
                dataList = fourth_Data.split('\n')
                #print dataList
                for information in dataList:
                    if 'Weight' in dataList[wei]:
                        pre_Weight = dataList[wei]
                        sec_weight = str(pre_Weight).replace('Weight :','')
                        weight = sec_weight.replace(' ','')
                    wei += 1
                    if 'IP' in dataList[iP]:
                        ipRating = str(dataList[iP])
                    iP += 1
        for product_Dimensions in dataList:
            if 'Product dimensions :' in dataList[x]:
                #print dataList[x]
                dimensionList = str(dataList[x]).replace('mm','mm:')
                #print dimensionList
                prelim_Dimensions = dimensionList.replace('Product dimensions :','')
                first_Dimensions = prelim_Dimensions.replace('cm','0mm')
                sec_Dimensions = first_Dimensions.replace('  ',' ')
                third_Dimensions = sec_Dimensions.strip()
                dimenList = third_Dimensions.split('mm:')
                #print dimenList
                for project in dimenList:
                    if 'Proj' in dimenList[p]:
                        pre_pro = str(dimenList[p]).replace('Proj','')
                        sec_pro = pre_pro.replace(':','')
                        thro_pro = sec_pro.replace(' ','')
                        projection = thro_pro
                    elif p == len(dimenList):
                        print 'Projection not found'
                    p += 1
                for diamet in dimenList:
                    if 'dia' in dimenList[d]:
                        pre_dia = str(dimenList[d]).replace('dia','')
                        sec_dia = pre_dia.replace(':','')
                        third_dia = sec_dia.replace(' ','')
                        diameter = third_dia
                    elif d == len(dimenList):
                        print 'Diameter not found'
                    d += 1
                for heig in dimenList:
                    if 'H:' in dimenList[h]:
                        pre_hei = str(dimenList[h]).replace('H','')
                        sec_hei = pre_hei.replace(':','')
                        third_hei = sec_hei.replace(' ','')
                        height = third_hei
                    elif h == len(dimenList):
                        print 'Height not found'
                    h += 1
                for lent in dimenList:
                    if 'L:' in dimenList[l]:
                        pre_leng = str(dimenList[l]).replace('L','')
                        sec_leng = pre_leng.replace(':','')
                        third_leng = sec_leng.replace(' ','')
                        length = third_leng
                    elif l == len(dimenList):
                        print 'Length not found'
                    l += 1
                for wid in dimenList:
                    if 'W:' in dimenList[w]:
                        pre_wid = str(dimenList[w]).replace('W','')
                        sec_wid = pre_wid.replace(':','')
                        third_wid = sec_wid.replace(' ','')
                        width = third_wid
                    elif w == len(dimenList):
                        print 'Width not found'
                    w += 1
            x += 1
        print 'IP Rating = ', ipRating
        print 'Weight = ', weight
        print 'Projection = ', projection, 'mm'
        print 'Diameter = ',diameter, 'mm'
        print 'Length = ',length, 'mm'
        print 'Height = ',height, 'mm'
        print 'Width = ',width, 'mm'
    except TypeError:
        print 'Type Error... skipping this product and carrying on.'

以下是输出示例

IP44ating =
Weight =  .51KGS
Projection =  35 mm
Diameter =  0 mm
Length =  0 mm
Height =  90 mm
Width =  120 mm

2 个答案:

答案 0 :(得分:2)

我强烈怀疑您认为ipRating的数据IP20实际上是\rIP20。那就是:你在变量的开头有一个杂散的0x13回车符。回车符正在将打印位置移动到行的开头,然后变量将覆盖您之前打印的内容。

您可以通过添加以下行来测试这是否是问题:

ipRating = ipRating.replace("\r", "")
在打印声明之前

答案 1 :(得分:0)

这是做你正在做的事情的正确方法。

print('IP Rating = %s' % ipRating)

print('IP Rating = %d' % ipRating)

这只是代码末尾所有print语句中的一个示例。

如果您要打印字符串变量,请使用%s或以其他方式使用%d。如果您还有其他问题,请询问。

相关问题