คำถามติดแท็ก python

Python เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์แบบไดนามิกพิมพ์อเนกประสงค์ มันถูกออกแบบมาให้เรียนรู้เข้าใจและใช้งานได้อย่างรวดเร็วและบังคับใช้ไวยากรณ์ที่สะอาดและสม่ำเสมอ โปรดทราบว่า Python 2 สนับสนุนอย่างเป็นทางการตั้งแต่วันที่ 01-01-2020 สำหรับคำถาม Python เฉพาะรุ่นให้เพิ่มแท็ก [python-2.7] หรือ [python-3.x] เมื่อใช้ตัวแปรหรือไลบรารี Python (เช่น Jython, PyPy, Pandas, Numpy) โปรดรวมไว้ในแท็ก


14
หน้าจาวาสคริปต์การขูดเว็บด้วย Python
ฉันพยายามที่จะพัฒนามีดโกนเว็บอย่างง่าย ฉันต้องการแยกข้อความโดยไม่มีรหัส HTML ในความเป็นจริงฉันบรรลุเป้าหมายนี้ แต่ฉันเห็นว่าในบางหน้าเว็บที่โหลด JavaScript ฉันไม่ได้รับผลลัพธ์ที่ดี ตัวอย่างเช่นหากรหัส JavaScript บางตัวเพิ่มข้อความฉันไม่เห็นเพราะเมื่อฉันโทร response = urllib2.urlopen(request) ฉันได้รับข้อความต้นฉบับโดยไม่มีข้อความเพิ่ม (เพราะมีการใช้งาน JavaScript ในไคลเอนต์) ดังนั้นฉันกำลังมองหาแนวคิดเพื่อแก้ไขปัญหานี้

9
วิธีแก้ไขรายการในระหว่างการวนซ้ำ
ตอนนี้ฉันรู้ว่ามันไม่ปลอดภัยที่จะแก้ไขรายการในระหว่างการวนซ้ำซ้ำ อย่างไรก็ตามสมมติว่าฉันมีรายการของสตริงและฉันต้องการแยกสตริงเอง การแทนที่ค่าที่เปลี่ยนแปลงไม่ได้จะนับเป็นการเปลี่ยนแปลงหรือไม่?
178 python 

2
ความแตกต่างระหว่างโพรเซสย่อย Popen และการโทร (ฉันจะใช้ได้อย่างไร)
ฉันต้องการเรียกโปรแกรมภายนอกจาก Python ฉันใช้ทั้งสองPopen()และcall()ทำสิ่งนั้น ความแตกต่างระหว่างสองคืออะไร เป้าหมายเฉพาะของฉันคือการเรียกใช้คำสั่งต่อไปนี้จาก Python ฉันไม่แน่ใจว่าการเปลี่ยนเส้นทางทำงานอย่างไร ./my_script.sh > output ฉันอ่านเอกสารและมันบอกว่าcall()เป็นฟังก์ชั่นอำนวยความสะดวกหรือฟังก์ชั่นทางลัด เราสูญเสียพลังงานโดยการใช้call()แทนPopen()หรือไม่?
178 python  subprocess  popen 

4
การเปรียบเทียบ tuple ทำงานอย่างไรใน Python
ฉันได้อ่านหนังสือการเขียนโปรแกรมCore Pythonและผู้เขียนแสดงตัวอย่างเช่น: (4, 5) < (3, 5) # Equals false ดังนั้นฉันสงสัยว่ามันเป็นเท็จอย่างไร / ทำไมเท่ากัน? ไพ ธ อนเปรียบเทียบทูเปิลทั้งสองนี้อย่างไร Btw มันไม่ได้อธิบายไว้ในหนังสือ

5
รายการความเข้าใจบรรทัดเดียว: if-else ชุดรูปแบบ
มันเพิ่มเติมเกี่ยวกับไวยากรณ์ความเข้าใจรายการหลาม ฉันมีรายการความเข้าใจที่สร้างรายการเลขคี่ของช่วงที่กำหนด: [x for x in range(1, 10) if x % 2] สิ่งนี้ทำให้ตัวกรอง - ฉันมีรายการแหล่งที่มาซึ่งฉันจะลบเลขคู่ออก ( if x % 2) ฉันต้องการใช้บางอย่างเช่นถ้าเป็นอย่างอื่นที่นี่ รหัสต่อไปนี้ล้มเหลว: >>> [x for x in range(1, 10) if x % 2 else x * 100] File "<stdin>", line 1 [x for x in range(1, 10) if x % …


12
การนำเข้าสัมพัทธ์ - ModuleNotFoundError: ไม่มีโมดูลชื่อ x
นี่เป็นครั้งแรกที่ฉันได้นั่งลงและลองใช้ python 3 และดูเหมือนจะล้มเหลวอย่างน่าสังเวช ฉันมีสองไฟล์ต่อไปนี้: test.py config.py config.py มีฟังก์ชั่นบางอย่างที่กำหนดไว้ในนั้นรวมถึงตัวแปรบางอย่าง ฉันได้แยกมันออกเป็น: config.py debug = True test.py import config print (config.debug) ฉันยังมี __init__.py อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้: ModuleNotFoundError: No module named 'config' ฉันทราบว่าอนุสัญญา py3 นั้นใช้การนำเข้าแบบสัมบูรณ์: from . import config อย่างไรก็ตามสิ่งนี้นำไปสู่ข้อผิดพลาดต่อไปนี้: ImportError: cannot import name 'config' ดังนั้นฉันจะสูญเสียว่าจะทำอย่างไรที่นี่ ... ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก :)


8
Python 3 เปลี่ยนช่วงเป็นรายการ
ฉันพยายามทำรายการด้วยตัวเลข1-1000ในนั้น เห็นได้ชัดว่ามันน่ารำคาญที่จะเขียน / อ่านดังนั้นฉันพยายามทำรายการด้วยช่วงที่อยู่ในนั้น ใน Python 2 ดูเหมือนว่า: some_list = range(1,1000) จะใช้งานได้ แต่ใน Python 3 ช่วงจะคล้ายกับxrangeของ Python 2 หรือไม่ ใครสามารถให้ข้อมูลเชิงลึกเกี่ยวกับเรื่องนี้?
178 python  python-3.x  list  range 

14
การใช้ Pip เพื่อติดตั้งแพ็คเกจไปยัง Anaconda Environment
conda 4.2.13 MacOSX 10.12.1 ฉันพยายามติดตั้งแพคเกจจากpipสภาพแวดล้อมสด (เสมือน) ที่สร้างขึ้นโดยใช้อนาคอนดา ในเอกสารอนาคอนดามันบอกว่ามันดีมาก มันทำแบบเดียวกับ virtualenv เปิดใช้งานสภาพแวดล้อมที่คุณต้องการนำโปรแกรมจากนั้นไปติดตั้งโปรแกรม ... ฉันสร้างสภาพแวดล้อมที่ว่างเปล่าใน Ananconda เช่นนี้ conda create -n shrink_venv เปิดใช้งาน: source activate shrink_venv จากนั้นผมก็สามารถมองเห็นในขั้วที่ฉันกำลังทำงานใน (shrink_venv)env เกิดปัญหาขึ้นเมื่อฉันพยายามติดตั้งแพคเกจโดยใช้pip: (shrink_venv): pip install Pillow Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages ดังนั้นฉันสามารถเห็นมันคิดว่าความต้องการเป็นที่พอใจจากแพคเกจทั้งระบบ ดังนั้นดูเหมือนว่าสภาพแวดล้อมจะทำงานไม่ถูกต้องไม่เหมือนที่กล่าวไว้ในเอกสาร ฉันกำลังทำอะไรผิดที่นี่? เพิ่งทราบว่าฉันรู้ว่าคุณสามารถใช้conda installสำหรับแพ็คเกจ แต่ฉันมีปัญหากับหมอนจากอนาคอนด้าดังนั้นฉันจึงต้องการได้รับจากpipและเนื่องจากเอกสารบอกว่าไม่เป็นไร ผลลัพธ์ของwhich -a pip: /usr/local/bin/pip …

5
เหตุใดจึงไม่มี GIL ใน Java Virtual Machine ทำไมไพ ธ อนถึงต้องการตัวแย่?
ฉันหวังว่าบางคนสามารถให้ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่แตกต่างกันโดยพื้นฐานเกี่ยวกับ Java Virtual Machine ที่อนุญาตให้ใช้เธรดได้อย่างดีโดยไม่จำเป็นต้องใช้ Global Interpreter Lock (GIL) ในขณะที่ Python จำเป็นต้องมีความชั่วร้าย
177 java  python  multithreading  jvm  gil 

20
การค้นหาแบบไบนารี (bisection) ใน Python
มีฟังก์ชั่นห้องสมุดที่ดำเนินการค้นหาแบบไบนารีในรายการ / ทูเปิลและส่งคืนตำแหน่งของรายการหากพบและ 'เท็จ' (-1, ไม่มี, ฯลฯ ) ถ้าไม่? ฉันพบฟังก์ชัน bisect_left / ขวาในโมดูล bisectแต่พวกเขายังคงส่งคืนตำแหน่งแม้ว่ารายการไม่ได้อยู่ในรายการ มันดีมากสำหรับการใช้งานที่ต้องการ แต่ฉันแค่อยากรู้ว่ารายการนั้นอยู่ในรายการหรือไม่ (ไม่ต้องการแทรกอะไร) ฉันคิดว่าจะใช้bisect_leftแล้วตรวจสอบว่ารายการในตำแหน่งนั้นเท่ากับสิ่งที่ฉันกำลังค้นหาหรือไม่ แต่ดูเหมือนว่าจะยุ่งยาก (และฉันต้องทำการตรวจสอบอย่าง จำกัด หากจำนวนอาจมากกว่าจำนวนที่มากที่สุดในรายการของฉัน) หากมีวิธีที่ดีกว่าฉันต้องการทราบเกี่ยวกับมัน แก้ไขเพื่อชี้แจงสิ่งที่ฉันต้องการสิ่งนี้สำหรับ: ฉันทราบว่าพจนานุกรมจะเหมาะมากสำหรับสิ่งนี้ แต่ฉันพยายามรักษาปริมาณการใช้หน่วยความจำให้ต่ำที่สุดเท่าที่จะทำได้ การใช้งานที่ฉันตั้งใจจะเป็นตารางค้นหาสองทาง ฉันมีรายการของค่าในตารางและฉันต้องสามารถเข้าถึงค่าตามดัชนีของพวกเขา และฉันต้องการหาดัชนีของค่าใดค่าหนึ่งหรือไม่มีถ้าค่านั้นไม่อยู่ในรายการ การใช้พจนานุกรมสำหรับวิธีนี้จะเป็นวิธีที่เร็วที่สุด แต่จะ (ประมาณ) ความต้องการของหน่วยความจำเพิ่มขึ้นเป็นสองเท่า ฉันถามคำถามนี้โดยคิดว่าฉันอาจมองข้ามบางอย่างในห้องสมุด Python ดูเหมือนว่าฉันจะต้องเขียนโค้ดของตัวเองตามที่ Moe แนะนำ

12
ให้วัตถุ JSON ยอมรับไบต์หรือให้ urlopen สตริงออก
ด้วย Python 3 ฉันกำลังขอเอกสาร json จาก URL response = urllib.request.urlopen(request) responseวัตถุเป็นวัตถุไฟล์เช่นเดียวกับreadและreadlineวิธีการ โดยปกติแล้ววัตถุ JSON สามารถสร้างขึ้นด้วยไฟล์ที่เปิดในโหมดข้อความ obj = json.load(fp) สิ่งที่ฉันต้องการจะทำคือ: obj = json.load(response) อย่างไรก็ตามสิ่งนี้ไม่ทำงานเมื่อ urlopen ส่งคืนวัตถุไฟล์ในโหมดไบนารี แน่นอนว่าการทำงานรอบ ๆ : str_response = response.read().decode('utf-8') obj = json.loads(str_response) แต่สิ่งนี้รู้สึกไม่ดี ... มีวิธีที่ดีกว่าที่ฉันสามารถแปลงวัตถุไฟล์ไบต์เป็นวัตถุไฟล์สตริง? หรือฉันไม่มีพารามิเตอร์ใด ๆ สำหรับurlopenหรือjson.loadให้การเข้ารหัส

8
BaseException.message เลิกใช้ใน Python 2.6
ฉันได้รับคำเตือนว่า BaseException.message ไม่สนับสนุนใน Python 2.6 เมื่อฉันใช้ข้อยกเว้นที่กำหนดโดยผู้ใช้ต่อไปนี้: class MyException(Exception): def __init__(self, message): self.message = message def __str__(self): return repr(self.message) นี่คือคำเตือน: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 self.message = message เกิดอะไรขึ้นกับสิ่งนี้? ฉันต้องเปลี่ยนอะไรเพื่อกำจัดคำเตือนที่ไม่เห็นด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.