Преобразование списка в нижний регистр

Я пытаюсь получить этот столбец слов в input.txt:

Suzuki music
Chinese music
Conservatory
Blue grass
Rock n roll
Rhythm
Composition
Contra
Instruments 

в этот формат:

"suzuki music", "chinese music", "conservatory music", "blue grass", "rock n roll", "rhythm"...

Этот код:

with open ('artsplus_stuff.txt', 'r') as f:
    list.append(", ".join(['%s' % row for row in f.read().splitlines()]))
    for item in list:
        item.lower()

print list

возвращает список, но первые буквы капитализируются.

['Музыка Suzuki, китайская музыка, Консерватория, Синяя трава, Рок-н-ролл, Ритм, Композиция, Contra, Инструменты']

Как получить все предметы с нижним обрезком?

Спасибо!


Ответ не работает в этом списке:

Chess
Guitar
Woodworking
Gardening
Car_restoration
Metalworking
Marksman
Camping
Backpacking_(wilderness)
Hunting
Fishing
Whittling
Geocaching
Sports
Model_Building
Leatherworking
Bowling
Archery
Hiking
Connoisseur
Photography
Pool_(cue_sports)
Mountaineering
Cooking
Blacksmith
Aviator
Magic_(illusion)
Foreign_language
Card_game
Blog
Paintball
Fencing
Brewing
Amateur_Astronomy
Genealogy
Adventure_racing
Knitting
Computer_Programming
Amateur_radio
Audiophile
Baking
Bboying
Baton_twirling
Chainmail
Constructed_language
Coloring
Crocheting
Creative_writing
Drawing
Fantasy_Football
Fishkeeping
Home_automation
Home_Movies
Jewelry
Knapping
Lapidary_club
Locksport
Musical_Instruments
Painting
RC_cars
Scrapbooking
Sculpting
Sewing
Singing
Writing
Air_sports
Boardsport
Backpacking
Bonsai
Canoeing
Cycling
Driving
Freerunning
Jogging
Kayaking
Motor_sports
Mountain_biking
Machining
Parkour
Rock_climbing
Running
Sailing
Sand_castle
Sculling
Rowing_(sport)
Human_swimming
Tai_Chi
Vehicle_restoration
Water_sports
Antiques
Coin_collecting
Element_collecting
Stamp_collecting
Vintage_car
Vintage_clothing
Record_Collecting
Antiquities
Car_audio
Fossil_collecting
Insect_collecting
Leaf
Metal_detectorist
Mineral_collecting
Petal
Rock_(geology)
Seaglass
Seashell
Boxing
Combination_puzzle
Contract_Bridge
Cue_sports
Darts
Table_football
Team_Handball
Airsoft
American_football
Association_football
Auto_racing
Badminton
Climbing
Cricket
Disc_golf
Figure_skating
Footbag
Kart_racing
Plank_(exercise)
Racquetball
Rugby_league
Table_tennis
Microscopy
Reading_(process)
Shortwave_listening
Videophile
Aircraft_spotting
Amateur_geology
Birdwatching
Bus_spotting
Gongoozler
Meteorology
Travel
Board_game
Airbrush
Advocacy
Acting
model_aircraft
Pets
Aquarium
Astrology
Astronomy
Backgammon
Base_Jumping
Sun_tanning
Beachcombing
Beadwork
Beatboxing
Campanology
Belly_dance
cycle_Polo
Bicycle_motocross
Boating
Boomerang
Volunteering
Carpentry
Butterfly_Watching
Button_Collecting
Cake_Decorating
Calligraphy
Candle
Cartoonist
Casino
Cave_Diving
Ceramic
Church
Cigar_Smoking
Cloud_Watching
Antique
Hat
album
Gramophone_record
trading_card
Musical_composition
Worldbuilding
Cosplay
Craft
Cross-Stitch
Crossword_Puzzle
Diecast
Digital_Photography
Dodgeball
Doll
Dominoes
Dumpster_Diving
restaurant
education
Electronics
Embroidery
Entertainment
physical_exercise
Falconry
List_of_fastest_production_cars
Felt
Poi_(performance_art)
Floorball
Floristry
Fly_Tying
off-roading
ultimate_(sport)
Game
Garage_sale
Ghost_Hunting
Glowsticking
Gunsmith
Gyotaku
Handwriting
Hang_gliding
Herping
HomeBrewing
Home_Repair
Home_Theater
Hot_air_ballooning
Hula_Hoop
Ice_skating
Impersonator
Internet
Invention
Jewellery
Jigsaw_Puzzle
Juggling
diary
skipping_rope
amateur_Chemistry
Kite
snowkiting
knot
Laser
Lawn_Dart
poker
Leather_crafting
Lego
Macramé
Model_Car
Matchstick_Model
Meditation
Metal_Detector
Rail_transport_modelling
Model_Rocket
ship_model
scale_model
Motorcycle
Needlepoint
Origami
Papermaking
Papier-mâché
Parachuting
Paragliding
Pinochle
Pipe_Smoking
Pottery
Powerbocking
Demonstration_(people)
Puppetry
Pyrotechnics
Quilting
pigeon_racing
Rafting
Railfan
Rapping
remote_control
Relaxation
Renaissance_Fair
Renting_movies
Robotics
Rock_Balancing
Role-playing
sand_art_and_play
Scuba_Diving
Self-Defense
Skeet_Shooting
Skiing
Shopping
choir
Skateboarding
Sketch_(drawing)
SlackLining
Sleep
Slingshot
Slot_Car_Racing
Snorkeling
Soap
Rubik's_Cube
caving
Family
Storm_Chasing
Storytelling
String_Figure
Surf_Fishing
Survival_skills
Tatting
Taxidermy
Tea_Tasting
Tesla_Coil
Tetris
Textile
stone_Rubbing
Antique_tool
Toy
Treasure_Hunting
Trekkie
tutoring
Urban_Exploration
Video_Game
Violin
Volunteer
Walking
Weightlifting
Windsurfing
WineMaking
Wrestling
Zip-line
traveling

error: list.append( ",".join([' "% s" '% row для строки в f.read(). splitlines()])) TypeError: дескриптор 'append' требует объекта 'list', но получил 'str' выход из системы

Ответ 1

Вместо

for item in list:
    item.lower()

измените имя переменной list на l, или что бы вы ни хотели, это не зарезервированное слово в Python и используйте следующую строку, явно заменяя все, что вы называете списком для l.

l = [item.lower() for item in l]

Метод lower возвращает копию строки во всех строчных буквах. Как только строка была создана, ничто не может изменить ее содержимое, поэтому вам нужно создать новую строку с тем, что вы хотите в ней.

Ответ 2

Вот как это можно сделать:

In [6]: l = ['Suzuki music', 'Chinese music', 'Conservatory', 'Blue grass']

In [7]: map(str.lower, l)
Out[7]: ['suzuki music', 'chinese music', 'conservatory', 'blue grass']

Одна из причин, по которой ваш код не ведет себя так, как ожидалось, заключается в том, что item.lower() не изменяет строку (в Python строки неизменяемы). Вместо этого он возвращает строчную версию строки, которую ваш код игнорирует.

Ответ 3

Простейшим может быть понимание списка:

with open('./input.txt', 'r') as f:
    results = [ line.strip().lower() for line in f if line]

... Я предполагаю, что вы готовы удалить все ведущие и конечные пробелы из каждой строки; хотя вы можете использовать только .rstrip() или даже .rstrip('\n'), чтобы быть более конкретным в этом. (Можно было бы сохранить любые пробелы слева от каждой строки, а другие разделили бы только строки новой строки от концов строк.

Также это будет отфильтровывать любые пустые строки, включая пустую строку терминала, которая почти всегда находится в конце текстового файла. (Этот код будет работать даже с редким текстовым файлом, который не заканчивается новой строкой).

Ответ 4

Вы можете использовать метод str.lower().

Ответ 5

Для тех, кто любит тесты времени

In [1]: %timeit [c.lower() for c in l]
1000000 loops, best of 3: 866 ns per loop

In [2]: %timeit map(str.lower, l)
1000000 loops, best of 3: 1.01 µs per loop

In [3]: %timeit map(lambda x:x.lower(), l)
1000000 loops, best of 3: 1.41 µs per loop

Ответ 6

В Python строки неизменяемы. Что в Сэме Хилле это означает. Это означает, что строки не могут быть изменены. Однако их можно заменить. Аналогия должна была заменить ваш автомобиль. Ваш автомобиль является строковой переменной. Вы не можете изменить свой VW Bug на Lexus, но вы можете его заменить, купив Lexus. Но я не хочу двух автомобилей! Я хочу заменить VW Bug и уйти, оставив только мою дорогу. Другими словами. Я бы предпочел не добавлять другую переменную в свой Python script. Но это только я.

И я запустил Bug. Это было весело!

myList = ["Suzuki music", "Chinese music", "Conservatory music", "Blue grass", "Rock n roll", "Rhythm"]

for i in range(0, len(myList)):
   myList[i] = myList[i].lower()

for item in myList:
   print item