簡體   English   中英

在列表中用Python分割行?

[英]Splitting Lines in Python in a List?

我是Python的新手,無法獲得想要的結果。 我正在打開一個名為urldata.txt的文本文件,其中包含需要按方案,服務器和路徑細分的URL。

我已經從文件中檢索了數據:

urls = open("urldata.txt").read()
print(urls)

這將返回:

http://www.google.com

https://twitter.com/search?q=%23ASUcis355

https://github.com/asu-cis-355/course-info

我想將這些網址分別分成3個部分,以便在輸入時

urls.scheme()
urls.server()
urls.path()

輸入以下內容后,它將返回給我每個URL的方案

urls.scheme()

'http','https','https'

然后當我輸入時它將返回服務器

urls.server()

'google.com'
'twitter.com'
'github.com'

最后,當我輸入時它將返回路徑

urls.path() 

'/'
'/search?q=%23ASUcis355'
'/asu-cis-355/course-info'

我已經定義了一個類來做到這一點; 但是,我收到一條錯誤消息,提示“ scheme()缺少1個必需的位置參數:'self'下面是我的課程以及我創建的def部分。

class urls:
    def __init__(self,url):
        self.urls=urls
    def scheme(self):
        return urls.split("://")[0]
    def server(self):
        return urls.split("/")[2]
    def path(self):
        return urls.split(".com/")[1]

任何幫助都將不勝感激!

這個已經存在。 它稱為urlparse

from urllib.parse import urlparse

d = urlparse('https://twitter.com/search?q=%23ASUcis355')
print(d)

輸出:

ParseResult(scheme='https', netloc='twitter.com', path='/search', params='', query='q=%23ASUcis355', fragment='')

如果您嘗試調用類定義(URL是什么)而未在Python3中創建此類的實例,則將出現此錯誤

>>> urls.scheme()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: scheme() missing 1 required positional argument: 'self'
>>>

但是,如果您創建一個url實例,然后使用該實例,則可以按預期工作

>>> url_instance = urls("http://www.google.com")
>>> url_instance.scheme()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in scheme
AttributeError: type object 'urls' has no attribute 'split'

請注意,這可以解決您當前的錯誤,但是您的代碼不正確。 我將讓您弄清楚此錯誤是怎么回事。

類定義(或類型)與類實例之間的區別具有一些有趣的細微差別,但總的來說

class Thing:
     pass

是一個類定義,並且

thing_instance = Thing()

是該類的一個實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM