Bagaimana saya bisa mengambil string acak dari file .txt

Saya baru saja memulai pemrograman dengan python 2.7, dan saya mengalami masalah dengan generator acak saya untuk mengambil item dari file .txt luar, bertanya-tanya apakah ada yang bisa membantu saya sedikit...

Pada dasarnya saya ingin mengambil 100 pukulan acak, dan menghitung semuanya pada akhirnya, dan mencetak ringkasan stringnya. Saya harap ini masuk akal!

Saya tahu pertanyaan ini telah dijawab sebelumnya, namun jawabannya belum membantu saya.

Jadi, file txt saya berisi sekumpulan string, dipisahkan dengan koma. Seperti inilah tampilan kode saya:

import random

fname = raw_input("Enter filename: ")
infile = open(fname,'r')
data = infile.readlines()

for i in range(100):
   print(random.uniform("Car_types.txt"))

Terima kasih atas bantuan Anda sebelumnya!


person Odani87    schedule 08.04.2016    source sumber


Jawaban (3)


Saya baru saja menggunakan file teks untuk menguji kode saya. File pengujian terlihat seperti ini (tidak yakin apakah file Anda memiliki format yang sama dengan milik saya).

import random
def addElements(l):
    for i in l:
        global result
        result.append(i)
fname=raw_input("Enter filename: ")
result=[]
summary=[]
for line in open(fname,'r'):
    elements=line.strip().split(',')
    addElements(elements)
for i in range(100):
    summary.append(random.choice(result))
print summary
  1. tes.txt:

abc,def,ghi

jkl,mno,pqr

  1. Hasil:

['mno', 'ghi', 'pqr', 'jkl', 'abc', 'abc', 'jkl', 'jkl', 'jkl', 'def', 'pqr', 'def', ' jkl', 'pqr', 'mno', 'jkl', 'mno', 'def', 'jkl', 'jkl', 'def', 'mno', 'pqr', 'pqr', 'abc' , 'pqr', 'def', 'abc', 'pqr', 'def', 'jkl', 'pqr', 'mno', 'mno', 'mno', 'def', 'jkl', ' def', 'ghi', 'jkl', 'pqr', 'mno', 'ghi', 'mno', 'mno', 'jkl', 'jkl', 'ghi', 'abc', 'ghi' , 'ghi', 'jkl', 'mno', 'def', 'ghi', 'ghi', 'abc', 'abc', 'pqr', 'ghi', 'abc', 'abc', ' mno', 'def', 'jkl', 'mno', 'mno', 'jkl', 'jkl', 'pqr', 'pqr', 'pqr', 'jkl', 'def', 'jkl' , 'mno', 'mno', 'ghi', 'jkl', 'mno', 'ghi', 'pqr', 'abc', 'ghi', 'def', 'ghi', 'ghi', ' jkl', 'def', 'abc', 'abc', 'ghi', 'jkl', 'pqr', 'pqr', 'pqr', 'def', 'pqr', 'pqr', 'def' ]

Semoga ini bisa membantu Anda.

Jika hasil cetaknya masih tidak masuk akal bagi Anda, berikan saya seperti apa tampilan file txt Anda. Terima kasih!

person Michael Gao    schedule 08.04.2016

Ini mungkin yang Anda cari:

import random

fname = raw_input("Enter filename: ")
# With statements are better as they explicitly close the file
with open(fname,'r') as infile:
    data = infile.read().split(",")  # Split the strings with commas as you said

for i in range(100):
   print(random.choice(data))  # This will randomly choose one of the strings
person Bharel    schedule 08.04.2016
comment
Hai Bharel! Terima kasih atas saran Anda, tapi saya mendapatkan hasil yang tidak masuk akal. Inilah yang saya dapatkan:Masukkan nama file: Car_types.txt . . X . T . C p t C y t t r e r a t. t kamu t hal - person Odani87; 08.04.2016
comment
@Odani Saya tidak sepenuhnya yakin bagaimana hal itu mungkin - person Bharel; 08.04.2016

Jika Anda tidak ingin mendapatkan nilai yang sama, ambil sampel setelah memisahkan data dengan koma:

fname = raw_input("Enter filename: ")
with  open(fname) as f:
    for r in random.sample(f.read().split(), 100):
        print(r)

Anda membuka file, memanggil readlines dan kemudian tidak pernah menggunakan konten sama sekali, random.uniform("Car_types.txt")) bertindak berdasarkan string literal "Car_types.txt", Anda perlu menggunakan konten file yang sebenarnya.

person Padraic Cunningham    schedule 08.04.2016
comment
Ini berfungsi, tetapi saya masih tidak tahu bagaimana saya bisa mendapatkan hasil yang diringkas - setiap string dihitung. - person Odani87; 12.04.2016