2017-07-17 110 views
0

我想通过约3,000个URL的列表循环并为它们创建QR码。在一列中我有URL,而在另一列中,我想要在输出为图像时命名QR码文件名。插入'['和']'的QR码代码,如何阻止?

问题是转换为QR码的网址和我的文件名都出来括在方括号中。

例如:

URL   Filename 
www.abel.com Abel 

出来为:

URL in QR Code Filename of QR Code 
[www.abel.com] [Abel] 

这里是到目前为止我的代码:

import csv 
import qrcode 
import pandas as pd 

df = pd.read_csv('QR_Python_Test.csv') 

i = 1 
x = df.iloc[[i]] 

print(
x.QR_Code_Name.values) 
for i in df.index: 
    z = df.iloc[[i]] 
    x = str(z.Link_Short.values) 
    qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=5,border=2,) 
    qr.add_data(x) 
    qr.make(fit=True) 
    img = qr.make_image() 
    file_name = str(z.QR_Code_Name.values) + ".png" 
    print('Saving %s' % file_name) 
    image_file = open(file_name, "w") 
    img.save(file_name) 
    image_file.close() 
file.close() 

和一些示例数据:

URL    Filename 
www.apple.com  Apple 
www.google.com  Google 
www.microsoft.com Microsoft 
www.linux.org  Linux 

感谢你的帮助, 我

+0

您的样本数据不会出现是一个CSV文件,并没有在你的代码出现,产生你给的输出“出来的” 。 无论如何,对这两个值调用'str()'看起来就像是一个大红旗:我猜测你会得到一个列表而不是单个值,可能是因为你调用了'df.iloc()'一张名单,但因为我对大熊猫一无所知,这只是一个猜测。 – Duncan

+0

@邓肯,我的文件真的是一个CSV文件,我只是把一些数据放在那里有帮助。我最多使用Pandas,这就是为什么我以这种方式导入它,如果通常的Python'read_CSV()'是我的游戏的正确解决方案 - 并且根本不使用Pandas是正确的方法没关系,我想知道正确的方法来做到这一点。感谢您的评论,帮助我澄清事情,我。 – SDS

回答

1

如果您的数据框包含正确的信息,您可以使用DataFrame.itertuples

也是分开的功能

  • 从文件
  • 生成读取数据qr码
  • 保存文件

这样的话,你可以测试每个这些独特

def generate_images(df): 
    for row in df.itertuples(): 
     yield row.Filename, generate_qr(row.URL) 

def generate_qr(url): 
    qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=5,border=2,) 
    qr.add_data(url) 
    qr.make(fit=True) 
    return qr.make_image() 

def save_qr_code(qr_codes): 
    for filename, qr_code in qr_codes: 
     filename = filename + '.png' 
     print('saving to file %s' % (filename,) 
     with open(filename, 'wb') as file: 
      qr_code.save(file) 

df = pd.read_csv('my_data.csv') 

qr_codes = generate_images(df) 

save_qr_code(qr_codes) 
+0

我对qr.add_data(x)和qr.add_data(url)做了一些小的修改,以使最终的代码可以工作,但是这方面的专业知识当然是您的。谢谢! – SDS