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

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

6
ตรวจสอบว่ามีคีย์อยู่หรือไม่และทำซ้ำอาร์เรย์ JSON โดยใช้ Python
ฉันมีข้อมูล JSON จำนวนมากจากโพสต์ Facebook เช่นเดียวกับด้านล่าง: {"from": {"id": "8", "name": "Mary Pinter"}, "message": "How ARE you?", "comments": {"count": 0}, "updated_time": "2012-05-01", "created_time": "2012-05-01", "to": {"data": [{"id": "1543", "name": "Honey Pinter"}]}, "type": "status", "id": "id_7"} ข้อมูล JSON เป็นแบบกึ่งโครงสร้างและทั้งหมดไม่เหมือนกัน ด้านล่างนี้คือรหัสของฉัน: import json str = '{"from": {"id": "8", "name": "Mary Pinter"}, "message": "How ARE …
130 python  json  loops 

12
การถดถอยเชิงเส้นพหุคูณใน Python
ฉันไม่พบไลบรารี python ที่ทำการถดถอยแบบทวีคูณ สิ่งเดียวที่ฉันพบคือการถดถอยอย่างง่ายเท่านั้น ฉันต้องถอยหลังตัวแปรตาม (y) เทียบกับตัวแปรอิสระหลายตัว (x1, x2, x3 ฯลฯ ) ตัวอย่างเช่นด้วยข้อมูลนี้: print 'y x1 x2 x3 x4 x5 x6 x7' for t in texts: print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" / .format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7) (ผลลัพธ์สำหรับด้านบน :) y x1 x2 x3 x4 x5 x6 x7 -6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45 -5.0 -4.55 …

5
การเพิ่มไดเร็กทอรีไปยัง sys.path / PYTHONPATH
ฉันกำลังพยายามนำเข้าโมดูลจากไดเร็กทอรีเฉพาะ ปัญหาคือถ้าฉันใช้sys.path.append(mod_directory)เพื่อต่อท้ายพา ธ แล้วเปิดตัวแปล python ไดเร็กทอรีmod_directoryจะถูกเพิ่มที่ท้ายรายการ sys.path ถ้าฉันส่งออกPYTHONPATHตัวแปรก่อนเปิดตัวแปล python ไดเร็กทอรีจะถูกเพิ่มไปที่จุดเริ่มต้นของรายการ ในกรณีหลังนี้ฉันสามารถนำเข้าโมดูลได้ แต่ก่อนหน้านี้ฉันทำไม่ได้ มีใครอธิบายได้ไหมว่าทำไมสิ่งนี้จึงเกิดขึ้นและให้วิธีแก้ปัญหาเพื่อเพิ่มmod_directoryการเริ่มต้นภายในสคริปต์ python

7
defaultdict ที่ซ้อนกันของ defaultdict
มีวิธีทำให้ defaultdict เป็นค่าเริ่มต้นสำหรับ defaultdict ด้วยหรือไม่? (เช่นค่าเริ่มต้นการเรียกซ้ำแบบไม่มีที่สิ้นสุด?) ฉันต้องการที่จะทำได้: x = defaultdict(...stuff...) x[0][1][0] {} ฉันทำได้x = defaultdict(defaultdict)แต่นั่นเป็นเพียงระดับที่สอง: x[0] {} x[0][0] KeyError: 0 มีสูตรที่สามารถทำได้ แต่สามารถทำได้โดยใช้อาร์กิวเมนต์ defaultdict ปกติหรือไม่? โปรดทราบว่านี่เป็นการถามถึงวิธีการสร้างค่าเริ่มต้นแบบเรียกซ้ำแบบไม่มีที่สิ้นสุดดังนั้นจึงแตกต่างจากPython: defaultdict of defaultdict? ซึ่งเป็นวิธีการตั้งค่า defaultdict สองระดับ ฉันอาจจะใช้รูปแบบพวงแต่เมื่อฉันรู้ว่าฉันไม่รู้วิธีทำมันทำให้ฉันสนใจ

4
เลือก 50 รายการจากรายการแบบสุ่มเพื่อเขียนลงไฟล์
จนถึงตอนนี้ฉันได้หาวิธีนำเข้าไฟล์สร้างไฟล์ใหม่และสุ่มรายการแล้ว ฉันมีปัญหาในการเลือกเพียง 50 รายการจากรายการแบบสุ่มเพื่อเขียนลงไฟล์? def randomizer(input,output1='random_1.txt',output2='random_2.txt',output3='random_3.txt',output4='random_total.txt'): #Input file query=open(input,'r').read().split() dir,file=os.path.split(input) temp1 = os.path.join(dir,output1) temp2 = os.path.join(dir,output2) temp3 = os.path.join(dir,output3) temp4 = os.path.join(dir,output4) out_file4=open(temp4,'w') random.shuffle(query) for item in query: out_file4.write(item+'\n') ดังนั้นหากไฟล์การสุ่มทั้งหมดคือ example: random_total = ['9','2','3','1','5','6','8','7','0','4'] ฉันต้องการ 3 ไฟล์ (out_file1 | 2 | 3) โดยสุ่มชุดแรกเป็น 3, สุ่มชุดที่สองของ 3 และสุ่มชุดที่สามของ 3 (สำหรับตัวอย่างนี้ แต่ไฟล์ที่ฉันต้องการสร้างควรมี …
130 python  file  list  select  random 

11
เปลี่ยนเส้นทาง stdout เป็น "nothing" ใน python
ฉันมีโปรเจ็กต์ขนาดใหญ่ที่ประกอบด้วยโมดูลจำนวนมากเพียงพอโดยแต่ละชิ้นจะพิมพ์บางอย่างไปยังเอาต์พุตมาตรฐาน ตอนนี้เนื่องจากโครงการมีขนาดใหญ่ขึ้นเรื่อย ๆ ของprintงบการพิมพ์มากในการออกมาตรฐานซึ่งได้ทำโปรแกรมช้ามาก ตอนนี้ฉันต้องการตัดสินใจที่รันไทม์ว่าจะพิมพ์อะไรลงใน stdout หรือไม่ ฉันไม่สามารถทำการเปลี่ยนแปลงในโมดูลได้เนื่องจากมีโมดูลมากมาย (ฉันรู้ว่าฉันสามารถเปลี่ยนเส้นทาง stdout ไปยังไฟล์ได้ แต่มันก็ช้ามาก) ดังนั้นคำถามของฉันคือฉันจะเปลี่ยนเส้นทาง stdout ไปเป็น nothing ได้อย่างไรเช่นฉันจะทำให้printคำสั่งไม่ทำอะไรได้อย่างไร # I want to do something like this. sys.stdout = None # this obviously will give an error as Nonetype object does not have any write method. ตอนนี้ความคิดเดียวที่ฉันมีคือสร้างคลาสที่มีวิธีการเขียน (ซึ่งไม่ทำอะไรเลย) และเปลี่ยนเส้นทาง stdout ไปยังอินสแตนซ์ของคลาสนี้ class …
130 python  python-2.7 

12
เริ่มต้นอาร์เรย์ numpy
มีวิธีเริ่มต้นอาร์เรย์ที่เป็นตัวเลขและเพิ่มเข้าไปหรือไม่? ฉันจะอธิบายสิ่งที่ฉันต้องการพร้อมตัวอย่างรายการ ถ้าฉันต้องการสร้างรายการของวัตถุที่สร้างในลูปฉันสามารถทำได้: a = [] for i in range(5): a.append(i) ฉันต้องการทำสิ่งที่คล้ายกันกับอาร์เรย์จำนวนนับ ฉันรู้เกี่ยวกับ vstack, เชื่อมต่อ ฯลฯ อย่างไรก็ตามดูเหมือนว่าสิ่งเหล่านี้ต้องการอาร์เรย์ numpy สองตัวเป็นอินพุต สิ่งที่ฉันต้องการคือ: big_array # Initially empty. This is where I don't know what to specify for i in range(5): array i of shape = (2,4) created. add to big_array ควรจะมีรูปร่างbig_array (10,4)ต้องทำอย่างไร? แก้ไข: …
130 python  arrays  numpy 

5
แนวทางปฏิบัติที่ดีในการตรวจสอบว่ามีตัวแปรด้านสิ่งแวดล้อมอยู่หรือไม่?
ฉันต้องการตรวจสอบสภาพแวดล้อมของฉันว่ามีตัวแปรหรือไม่พูด"FOO"ใน Python เพื่อจุดประสงค์นี้ฉันใช้ไฟล์osไลบรารีมาตรฐาน หลังจากอ่านเอกสารของห้องสมุดฉันได้ค้นพบ 2 วิธีในการบรรลุเป้าหมาย: วิธีที่ 1: if "FOO" in os.environ: pass วิธีที่ 2: if os.getenv("FOO") is not None: pass ฉันต้องการทราบว่าวิธีใดเป็นเงื่อนไขที่ดี / เป็นที่ต้องการและเพราะเหตุใด

7
ไดเร็กทอรีรายการ Python ไดเร็กทอรีย่อยและไฟล์
ฉันพยายามสร้างสคริปต์เพื่อแสดงรายการไดเร็กทอรีไดเร็กทอรีย่อยและไฟล์ทั้งหมดในไดเร็กทอรีที่กำหนด ฉันลองสิ่งนี้: import sys,os root = "/home/patate/directory/" path = os.path.join(root, "targetdirectory") for r,d,f in os.walk(path): for file in f: print os.path.join(root,file) โชคไม่ดีที่มันทำงานไม่ถูกต้อง ฉันได้รับไฟล์ทั้งหมด แต่ไม่ใช่เส้นทางที่สมบูรณ์ ตัวอย่างเช่นถ้าโครงสร้าง dir จะเป็น: /home/patate/directory/targetdirectory/123/456/789/file.txt มันจะพิมพ์: /home/patate/directory/targetdirectory/file.txt สิ่งที่ฉันต้องการคือผลลัพธ์แรก ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ขอบคุณ
130 python  file  path 

2
การเปรียบเทียบสตริงฟัซซีประสิทธิภาพสูงใน Python ให้ใช้ Levenshtein หรือ difflib [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังทำการฟื้นฟูข้อความทางคลินิก (ตรวจการสะกด) ซึ่งฉันตรวจสอบแต่ละคำเทียบกับพจนานุกรมทางการแพทย์ 900,000 คำ ฉันกังวลมากขึ้นเกี่ยวกับความซับซ้อนของเวลา / ประสิทธิภาพ ฉันต้องการเปรียบเทียบสตริงที่คลุมเครือ แต่ฉันไม่แน่ใจว่าควรใช้ไลบรารีใด ตัวเลือกที่ 1: import Levenshtein Levenshtein.ratio('hello world', 'hello') Result: 0.625 ทางเลือกที่ 2: import difflib difflib.SequenceMatcher(None, 'hello world', 'hello').ratio() Result: 0.625 ในตัวอย่างนี้ทั้งสองให้คำตอบเดียวกัน คุณคิดว่าทั้งคู่ทำงานเหมือนกันในกรณีนี้หรือไม่?

3
การรวมคอลัมน์เดียวกันหลายรายการโดยใช้ pandas GroupBy.agg ()
มีแพนด้าในตัวเพื่อใช้ฟังก์ชันการรวมที่แตกต่างกันสองฟังก์ชันf1, f2กับคอลัมน์เดียวกันdf["returns"]โดยไม่ต้องเรียกagg()หลายครั้งหรือไม่? ตัวอย่างดาต้าเฟรม: import pandas as pd import datetime as dt pd.np.random.seed(0) df = pd.DataFrame({ "date" : [dt.date(2012, x, 1) for x in range(1, 11)], "returns" : 0.05 * np.random.randn(10), "dummy" : np.repeat(1, 10) }) ผิดทางวากยสัมพันธ์ แต่ถูกต้องโดยสังหรณ์ใจวิธีที่จะทำคือ: # Assume `f1` and `f2` are defined for aggregating. df.groupby("dummy").agg({"returns": f1, "returns": f2}) …

9
ฉันควรเพิ่มไฟล์การโอนย้าย Django ในไฟล์. gitignore หรือไม่
ฉันควรเพิ่มไฟล์การโอนย้าย Django ใน.gitignoreไฟล์หรือไม่ เมื่อเร็ว ๆ นี้ฉันได้รับปัญหาเกี่ยวกับคอมไพล์มากมายเนื่องจากความขัดแย้งในการย้ายข้อมูลและสงสัยว่าฉันควรทำเครื่องหมายไฟล์การย้ายข้อมูลเป็นละเว้นหรือไม่ ถ้าเป็นเช่นนั้นฉันจะเพิ่มการย้ายข้อมูลทั้งหมดที่มีในแอปของฉันและเพิ่มลงใน.gitignoreไฟล์ได้อย่างไร
130 python  django  git 

5
พิมพ์คำใบ้รายการประเภทที่ระบุ
การใช้คำอธิบายประกอบฟังก์ชันของ Python 3 เป็นไปได้ที่จะระบุประเภทของรายการที่อยู่ในรายการที่เป็นเนื้อเดียวกัน (หรือคอลเล็กชันอื่น ๆ ) เพื่อวัตถุประสงค์ในการระบุประเภทใน PyCharm และ IDE อื่น ๆ ? ตัวอย่างรหัส pseudo-python สำหรับรายการ int: def my_func(l:list<int>): pass ฉันรู้ว่ามันเป็นไปได้โดยใช้ Docstring ... def my_func(l): """ :type l: list[int] """ pass ... แต่ฉันชอบรูปแบบคำอธิบายประกอบมากกว่าถ้าเป็นไปได้

7
วิธีการเรียนสร้าง "TypeError: ... ได้หลายค่าสำหรับอาร์กิวเมนต์คำหลัก ... "
ถ้าฉันกำหนดวิธีการเรียนด้วยอาร์กิวเมนต์คำหลักจึง: class foo(object): def foodo(thing=None, thong='not underwear'): print thing if thing else "nothing" print 'a thong is',thong เรียกวิธีการสร้างTypeError: myfoo = foo() myfoo.foodo(thing="something") ... TypeError: foodo() got multiple values for keyword argument 'thing' เกิดอะไรขึ้น?

2
รับคำสั่งย่อยที่เลือกด้วย argparse
เมื่อฉันใช้คำสั่งย่อยด้วย python argparse ฉันสามารถรับอาร์กิวเมนต์ที่เลือกได้ parser = argparse.ArgumentParser() parser.add_argument('-g', '--global') subparsers = parser.add_subparsers() foo_parser = subparsers.add_parser('foo') foo_parser.add_argument('-c', '--count') bar_parser = subparsers.add_parser('bar') args = parser.parse_args(['-g, 'xyz', 'foo', '--count', '42']) # args => Namespace(global='xyz', count='42') ดังนั้นไม่ได้มีargs 'foo'การเขียนเพียงอย่างsys.argv[1]เดียวไม่สามารถใช้งานได้เนื่องจากโลกที่เป็นไปได้ ฉันจะรับคำสั่งย่อยได้อย่างไร

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