我是一个新手并且感到惊讶的是,我已经没有一个类似于我所要求的明确答案,如果这是重复的话,我会道歉。
我有一个CSV文件中的网址列表我试图缩短,我想循环访问我的CSV文件,然后在原始网址旁边写一个带有缩短网址的新列。
from pyshorteners import Shortener
import csv
def generate_short(url):
x = shortener.short(url)
return x
with open('Links_Test.csv') as csvfile:
my_date = csv.reader(csvfile, dialect = 'excel')
for row in my_data:
x = shortener.short(row)
print(X)
编辑: 我一直收到错误“ValueError:请输入一个有效的网址”,不知道如何从这里开始.....我确定我是问题所在。
以下是我的输入数据:
URL
http://www.google.com
http://www.facebook.com
http://www.twitter.com
http://www.linkedin.com
这就是我想要的输出结果:
URL Short_URL
http://www.google.com http://goo.gle
http://www.facebook.com http://goo.g3c
http://www.twitter.com http://goo.g3a
http://www.linkedin.com http://goo.g2q
感谢您的帮助。我很惊讶没有发布明确的答案(至少我找不到)所以如果这是重复的话,我很抱歉。
答案 0 :(得分:1)
在row[0]
或row['URL']
上应用该功能
此外,您必须在my_data.iterrows()
而不是my_data
from pyshorteners import Shortener
import pandas as pd
def generate_short(url):
x = shortener.short(url)
return x
my_date = pd.read_csv( 'Link-Tests.csv', sep = "\t") #seperator argument is optional. It can be a semi colon, a tab. Check your CSV file for knowing what the separator is.
for index,row in my_data.iterrows():
x = shortener.short(row[0])
print(X)
如果您始终可以将缩短的URL存储到单独的列表中,请将其转换为DataFrame,然后根据索引与原始数据框合并。
lst = []
my_date = pd.read_csv( 'Link-Tests.csv', sep = "\t")
for index,row in my_data.iterrows():
x = shortener.short(row[0])
lst.append(X)
df = pd.DataFrame(lst, columns=["Short-Url"])
my_data = my_data.join(df, how= 'outer')
答案 1 :(得分:0)
首先尝试这样做:
from pyshorteners import Shortener
import csv
def generate_short(url):
x = shortener.short(url)
return x
with open('Links_Test.csv') as csvfile:
my_data = csv.reader(csvfile, dialect = 'excel')
for row in my_data:
print(row) # output: ['URL'], ['google.com']...
您可能希望使用next()或者查看this thread来忽略标头。此外,您可能希望使用row[0]
来获取列表中的第一项。所以你的最终代码可能是
from pyshorteners import Shortener
import csv
def generate_short(url):
x = shortener.short(url)
return x
with open('Links_Test.csv') as csvfile:
next(csvfile) # skip the header row
my_data = csv.reader(csvfile, dialect = 'excel')
for row in my_data:
print(row[0]) # output: 'google.com' ....
# do the link shortener stuff here