【问题标题】:using python extract string from a list of string使用python从字符串列表中提取字符串
【发布时间】:2013-11-02 05:15:26
【问题描述】:

当我使用以下代码读取 CSV 标头时

def  read_header(gram):
    CSV_tag_read = csv.reader(open("Dataset/MALE_Training/"+str(gram)+"/"+str(gram)+".csv","rb"),delimiter='"')
    header=CSV_tag_read.next()

标题(csv文件的第一行)如下

Sample1"('CC', 'CD')"('CD', 'DT')"('DT', 'EX')"('EX', 'IN')"('IN', 'JJ')"('JJ', 'JJR')"('JJR', 'JJS')"('JJS', 'MD')"('MD', 'NN')"('NN', 'NNS')"('NNS', 'PRP')"('PRP', 'RB')"('RB', 'RBR')"('RBR', 'RP')"('RP', 'TO')"('TO', 'VB')"('VB', 'VBD')"('VBD', 'VBG')"('VBG', 'VBN')"('VBN', 'VBP')"('VBP', 'VBZ')"('VBZ', 'WDT')"('WDT', 'WP')"('WP', 'WRB')

我希望我的输出作为列表包含

['Sample1', '(CC, CD)', '(CD, DT)', '(DT, EX)', '(EX, IN)', '(IN, JJ)', '(JJ, JJR)', '(JJR, JJS)', '(JJS, MD)', '(MD, NN)', '(NN, NNS)', '(NNS, PRP)', '(PRP, RB)', '(RB, RBR)', '(RBR, RP)', '(RP, TO)', '(TO, VB)', '(VB, VBD)', '(VBD, VBG)', '(VBG, VBN)', '(VBN, VBP)', '(VBP, VBZ)', '(VBZ, WDT)', '(WDT, WP)', '(WP, WRB)']

【问题讨论】:

  • eval(a) 应该给你一个元组
  • 我的输出应该是一个包含[TO,RP,TO]的数组
  • [Sample2, "(CC, CD" ...是csv文件的第一行吗?
  • 如果在header = ... 行之后执行print(header) 会打印什么?
  • [Sample2,“(CC,CD)”,“(CD,DT)”,“(DT,EX)”,“(EX,IN)”,“(IN,JJ)” ,“(JJ,JJR)”,“(JJR,JJS)”,“(JJS,MD)”,“(MD,NN)”,“(NN,NNS)”,“(NNS,PRP)”,“ (PRP,RB)”,“(RB,RBR)”,“(RBR,RP)”,“(RP,TO)”,“(TO,VB)”,“(VB,VBD)”,“(VBD) , VBG)”, “(VBG, VBN)”, “(VBN, VBP)”, “(VBP, VBZ)”, “(VBZ, WDT)”, “(WDT, WP)”, “(WP, WRB) )"]

标签: python python-2.7 python-3.x


【解决方案1】:

使用ast.literal_eval

>>> import ast
>>> a = "('TO', 'RP', 'TO')"
>>> b = ast.literal_eval(a)
>>> b
('TO', 'RP', 'TO')
>>> b[0]
'TO'

或者

>>> [x.strip("' ") for x in a.strip('()').split(',')]
['TO', 'RP', 'TO']

UPDATED ANSWER对应于更新问题:

with open('/path/to/csv-file.csv') as f:
    reader = csv.reader(f, delimiter='"')
    header = [column.replace("'", "") for column in header]

【讨论】:

  • 我不知道您可以使用strip 代替replace。很好的答案。
  • @shahana.1988 如果这个答案对您有帮助,最好接受它。
  • @Kay 是 python 的初学者
猜你喜欢
  • 2014-07-12
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 2017-12-15
相关资源
最近更新 更多