Удалить "из строки - PullRequest
       1

Удалить "из строки

0 голосов
/ 14 ноября 2018
with open("p022_names.txt","r") as f:
    for line in f:
        name=[str(v) for v in line.split(",")]
name.sort()
print(name)
tot=0
for i in range(len(name)):
    tot=tot+sum(ord(letter)-64 for letter in name[i])
print(tot)

При чтении данных из файлов он также добавляет «и» в имя. Если имя COLIN, оно сохраняется в списке как «COLIN». Как мне это исправить? Входной файл.

"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL","RUTH","SHARON","MICHELLE","LAURA","SARAH","KIMBERLY","DEBORAH","JESSICA","SHIRLEY","CYNTHIA","ANGELA","MELISSA","BRENDA","AMY","ANNA","REBECCA","VIRGINIA","KATHLEEN","PAMELA","MARTHA","DEBRA","AMANDA","STEPHANIE","CAROLYN","CHRISTINE","MARIE","JANET","CATHERINE","FRANCES","ANN","JOYCE","DIANE","ALICE","JULIE","HEATHER","TERESA","DORIS","GLORIA","EVELYN","JEAN","CHERYL","MILDRED","KATHERINE","JOAN","ASHLEY","JUDITH","ROSE","JANICE","KELLY","NICOLE","JUDY","CHRISTINA","KATHY","THERESA","BEVERLY","DENISE","TAMMY","IRENE","JANE","LORI","RACHEL","MARILYN","ANDREA","KATHRYN","LOUISE","SARA","ANNE","JACQUELINE","WANDA","BONNIE","JULIA","RUBY","LOIS","TINA","PHYLLIS","NORMA","PAULA","DIANA","ANNIE","LILLIAN","EMILY","ROBIN","PEGGY","CRYSTAL","GLADYS","RITA","DAWN","CONNIE","FLORENCE","TRACY","EDNA","TIFFANY","CARMEN","ROSA","CINDY","GRACE","WENDY","VICTORIA",

Выход [ ' "МЭРИ"', ' "..."', ' "..."', ..]

Ответы [ 4 ]

0 голосов
/ 14 ноября 2018

Вот мое решение. Он поддерживает несколько имен в строке, разделенных запятой, а также несколько строк в файле.

names = []
with open('p022_names.txt') as f:
    for line in f:
        names.extend(v.lower().strip('"').strip("'") for v in line.split(","))

names.sort()

for name in names:
    tot = sum(ord(letter)-96 for letter in name)
    print("{0}: {1}".format(name, tot))
0 голосов
/ 14 ноября 2018

Вы можете удалить первый и последний символы из строки в Python:

name = "'COLIN'"
print(name[1:-1])

Это напечатает COLIN вместо 'COLIN'

0 голосов
/ 14 ноября 2018
with open("p022_names.txt","r") as f:
    for line in f:
        name=[str(v) for v in line.split(",")]
name.sort()
print(name)

Я предполагаю, что вы видите что-то вроде этого:

['"MARY"','"PATRICIA"'...]

Если я правильно понимаю ваш вопрос, вы хотите удалить символы ' и ". Символы ' здесь означают, что элементы списка являются строками. У вас нет ничего из этих фактических данных. Вам нужно только удалить двойные кавычки. Вам не нужно беспокоиться о одинарных кавычках. Единственные цитаты, которые у вас есть, это " те, которые были прочитаны из файла.

Также вы можете упростить

name=[str(v) for v in line.split(",")]

до

name = line.split(",")
0 голосов
/ 14 ноября 2018

Если вы хотите удалить эти символы из вашей строки, вы, вероятно, могли бы сделать что-то вроде этого:

s = s.replace("\"","")

Это заменит все экземпляры " пустой строкой.

Если вы хотите, чтобы они были удалены только на концах строки, вы можете сделать это

s = s.strip("\"")

Если вы хотите убедиться, что вы удаляете толькоодну кавычку с каждого конца, вы можете сделать что-то вроде этого:

if s.startswith("\""):
    s = s[1:]
elif s.endswith("\""):
    s = s[:-1]

Если вы знаете, что строка всегда будет иметь кавычки, вы можете упростить это до:

s = s[1:-1]

Однакоэтот файл выглядит как CSV-файл, и гораздо лучше проанализировать эти файлы, используя csv lib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...