读取文本文件的每一行并获取第一个拆分字符串

2024-09-29 23:26:36 发布

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

我想从python代码中读取一个文本文件link123.txt。文本文件包含3行。在

www.link1.com | linkname1
www.link2.com | linkname2
www.link3.com | linkname3

我需要将“target”变量中的行的第一部分(url)和第二部分(linkname)分配给“name”变量(供进一步使用)。在

到目前为止,代码:

^{pr2}$

我的问题是如何从被(“|”)分割的行中得到两个值 任何指导都将不胜感激。在


Tags: 代码txtcomurltargetwww文本文件link1
3条回答

可以使用^{}按分隔符拆分字符串:

>>> 'www.link1.com | linkname1'.split(' | ')
['www.link1.com', 'linkname1']

然后,使用iterable解包(或多重赋值)保存到变量:

^{pr2}$
with open("link123.txt") as f:
    for line in f:
        target, name = line.strip().split(' | ')
        # Do something with `target`, `name`

注意:迭代file对象将产生行。您不需要使用file.readlines(),它返回所有行的列表,除非您一次需要所有行。在


更新

如果要列出目标、名称,可以使用zip

>>> rows = [['link1', 'name1'], ['link2', 'name2'], ['link3', 'name3']]
>>> zip(*rows)
[('link1', 'link2', 'link3'), ('name1', 'name2', 'name3')]
# In Python 3.x, zip will return `zip` object instead of list.

with open("link123.txt") as f:
    targets, names = zip(*[line.strip().split(' | ') for line in f])
    # targets, names = map(list, zip(...))   # if you want lists isntead of tuples

而不是

target = [url.strip() for url in f.readlines()]

使用

^{pr2}$

您是否需要在不同的变量中包含所有名称和目标,例如:

In [1]:
with open("link123.txt") as f:
    targets, names = zip(*[url.strip().split(' | ') for url in f])
targets, names

Out[1]:
(('www.link1.com', 'www.link2.com', 'www.link3.com'), 
 ('linkname1', 'linkname2', 'linkname3'))

但你可以考虑把它们记在口述里:

^{pr2}$

相关问题 更多 >

    热门问题