Python readlines()并将数据附加到每行输出到一个lin

2024-06-14 11:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,其中有三行如下:

Dallas
Houston
Ft. Worth

我想做的是能够读入这些内容并从中建立链接,但所有的行输出都在一行。示例输出需要如下所示:

<a href="/dallas/">Dallas</a> <a href="/houston/">Houston</a> <a href="/ft-worth/">Ft. Worth</a>

这是我到目前为止的代码,它读取csv文件并输出,但它创建不同的行,我只需要一行加上我需要追加超链接的html代码。

f_in = open("data_files/states/major_cities.csv",'r')
for line in f_in.readlines():
    f_out.write(line.split(",")[0]+"")
f_in.close()
f_out.close()

Tags: 文件csv代码in示例内容close链接
2条回答

这是因为f_in.readlines()中的每一个line结尾都有一个新行。(尝试在该循环中添加print(repr(line)))。您需要做的是在writef_out之前删除这条新行:

for line in f_in.readlines():      
    actual_line = line.rstrip('\n')

整个代码如下所示:

import re 

with open('data_files/states/major_cities.csv') as f_in:
    with open('output_file.csv', 'w') as f_out:
        for line in f_in:
            city = line.rstrip('\n')
            f_out.write('<a href="/{}/">{}</a>'.format(
                re.sub(r'\W+', '-', city.lower()), 
                city
            ))

with语句处理closeing文件,因此不需要最后两行。

更新

正如J.F.Sebastian指出的那样,还需要slugify城市名称来实现您想要的输出。

尝试使用pythonCSV module处理CSV文件

import csv
file_out = open('file.txt','w')
with open('example.csv','rb') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        col=row[0]
        str="<a href=/" + col.strip().lower()
        str+= "/>" + col + "</a> "
        file_out.write(str)

相关问题 更多 >