16

我正在尝试在 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

返回一个列表,但第一个字母大写。

['铃木音乐、中国音乐、音乐学院、蓝草、摇滚、节奏、作曲、魂斗罗、乐器']

如何使所有项目都小写?

谢谢!


答案不适用于此列表:

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

错误:list.append(", ".join(['"%s"' % row for row in f.read().splitlines()])) 类型错误:描述符 'append' 需要一个 'list' 对象但收到'str' 注销

4

8 回答 8

50

代替

for item in list:
    item.lower()

将变量的名称更改listl或您喜欢的任何不是Python 中的保留字的名称,并使用以下行,显然将您命名列表的任何内容替换为l.

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

lower方法以所有小写字母返回字符串的副本。一旦创建了字符串,就无法修改其内容,因此您需要创建一个包含所需内容的新字符串。

于 2013-06-26T19:48:16.950 回答
12

这是如何完成的:

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 中,字符串是不可变的)。相反,它会返回字符串的小写版本,然后您的代码会忽略它。

于 2013-06-26T19:49:59.210 回答
2

最简单的可能是列表理解:

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

...我假设您愿意从每行中删除所有前导和尾随空格;尽管您可以使用 just.rstrip()甚至.rstrip('\n')更具体地使用它。(一个会保留每行左侧的任何空格,另一个会删除行尾的换行符。

这也将过滤掉任何空行,包括几乎总是在文本文件末尾找到的终端空行。(此代码甚至适用于不以换行符结尾的稀有文本文件)。

于 2013-06-26T19:59:41.117 回答
1

您可以使用方法 str.lower()。

于 2013-06-26T21:24:12.980 回答
1

对于那些喜欢计时测试的人

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
于 2014-09-24T08:00:32.173 回答
1

简单地说,我们可以将列表转换成小的后者来做到这一点。

>>> words = ["PYTHON", "PROGRAMMING"]
>>> type((words))
>>> for i in words:
          print(i.lower())

输出:

python programming
于 2018-09-26T07:18:01.923 回答
0

在 Python 中,字符串是不可变的。但是它们可以被替换并且它们可以被相同的变量名替换。而不是创建另一个变量使用相同的。

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
于 2017-05-27T03:50:34.447 回答
0

这是另一种方法:

my_list = ['John', 'michael', 'Robert', 'James']
new_list = []

for name in my_list:
    new_list.append(name.lower())

print(new_list)
于 2020-05-13T07:06:11.937 回答